From 035a1cc28f1000bf999529fb936fb7c0c45e766b Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 16 Aug 2024 10:25:04 -0400 Subject: [PATCH 01/54] feat: update solution landing pages and add web streaming --- src/.vuepress/sidebar/en.ts | 14 ++------------ .../concepts/kafka-proxies/iot-ingest-control.md | 6 +++--- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/.vuepress/sidebar/en.ts b/src/.vuepress/sidebar/en.ts index b053dc11..beeab8be 100644 --- a/src/.vuepress/sidebar/en.ts +++ b/src/.vuepress/sidebar/en.ts @@ -180,12 +180,8 @@ export const enSidebar = sidebar({ }, { text: "Amazon MSK", - children: [ - { - text: "Terraform", - link: "https://github.com/aklivity/zilla-plus-aws-templates/tree/main/amazon-msk/cdktf/web-streaming", - }, - ], + link: "https://github.com/aklivity/zilla-plus-aws-templates/tree/main/amazon-msk/cdktf/web-streaming", + children: [], }, ], }, @@ -360,12 +356,6 @@ export const enSidebar = sidebar({ link: "solutions/concepts/kafka-proxies/iot-ingest-control.md", children: [], }, - { - text: "Web Streaming on AWS", - icon: "aky-zilla-plus", - link: "solutions/concepts/kafka-proxies/web-streaming.md", - children: [], - }, ], }, { diff --git a/src/solutions/concepts/kafka-proxies/iot-ingest-control.md b/src/solutions/concepts/kafka-proxies/iot-ingest-control.md index 99df940d..e63e6690 100644 --- a/src/solutions/concepts/kafka-proxies/iot-ingest-control.md +++ b/src/solutions/concepts/kafka-proxies/iot-ingest-control.md @@ -20,7 +20,7 @@ The [Zilla Plus for Amazon MSK](https://aws.amazon.com/marketplace/pp/prodview-j ### Deploy with CloudFormation -Follow the [Amazon MSK IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. +Follow the [Amazon MSK IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-and-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. ## Confluent Cloud @@ -28,7 +28,7 @@ The [Zilla Plus for Confluent Cloud](https://aws.amazon.com/marketplace/pp/prodv ### Deploy with CloudFormation -Follow the [Confluent Cloud IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. +Follow the [Confluent Cloud IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-and-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. ## Redpanda @@ -36,4 +36,4 @@ The [Zilla Plus for Redpanda](https://aws.amazon.com/marketplace/pp/prodview-sj4 ### Deploy with CloudFormation -Follow the [Redpanda IoT Ingest and Control](../../how-tos/redpanda/iot-ingest-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. +Follow the [Redpanda IoT Ingest and Control](../../how-tos/redpanda/iot-ingest-and-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. From c6da75de5b89b4ddef53b5f2f7902dd50c42b181 Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 16 Aug 2024 11:08:29 -0400 Subject: [PATCH 02/54] fix: update links and add redirect --- package.json | 22 +- pnpm-lock.yaml | 886 +++++++++--------- src/.vuepress/theme.ts | 11 +- .../kafka-proxies/iot-ingest-control.md | 6 +- 4 files changed, 476 insertions(+), 449 deletions(-) diff --git a/package.json b/package.json index 3d757a63..baf7bf10 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "zilla-docs", "type": "module", - "version": "2.1.2", + "version": "2.1.1", "description": "The official documentation for the aklivity/zilla open-source project", "keywords": [], "author": "aklivity.io", @@ -22,20 +22,20 @@ "check-schema": "node ./.check-schema" }, "devDependencies": { - "@vuepress/bundler-vite": "2.0.0-rc.13", - "@vuepress/plugin-catalog": "2.0.0-rc.36", - "@vuepress/plugin-docsearch": "2.0.0-rc.28", - "@vuepress/plugin-google-analytics": "2.0.0-rc.34", - "@vuepress/plugin-redirect": "2.0.0-rc.36", - "@vuepress/plugin-register-components": "2.0.0-rc.34", - "@vuepress/plugin-shiki": "2.0.0-rc.36", + "@vuepress/bundler-vite": "2.0.0-rc.14", + "@vuepress/plugin-catalog": "2.0.0-rc.41", + "@vuepress/plugin-docsearch": "2.0.0-rc.39", + "@vuepress/plugin-google-analytics": "2.0.0-rc.37", + "@vuepress/plugin-prismjs": "2.0.0-rc.39", + "@vuepress/plugin-redirect": "2.0.0-rc.39", + "@vuepress/plugin-register-components": "2.0.0-rc.37", "link-checker": "^1.4.2", "markdownlint-cli2": "^0.8.1", "mathjax-full": "^3.2.2", "mermaid": "^10.9.1", - "vue": "^3.4.29", - "vuepress": "2.0.0-rc.13", - "vuepress-theme-hope": "2.0.0-rc.49" + "vue": "^3.4.38", + "vuepress": "2.0.0-rc.14", + "vuepress-theme-hope": "2.0.0-rc.52" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb70a191..441de91b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,26 +12,26 @@ importers: .: devDependencies: '@vuepress/bundler-vite': - specifier: 2.0.0-rc.13 - version: 2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8) + specifier: 2.0.0-rc.14 + version: 2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8) '@vuepress/plugin-catalog': - specifier: 2.0.0-rc.36 - version: 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.41 + version: 2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-docsearch': - specifier: 2.0.0-rc.28 - version: 2.0.0-rc.28(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.39 + version: 2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-google-analytics': - specifier: 2.0.0-rc.34 - version: 2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.37 + version: 2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-prismjs': + specifier: 2.0.0-rc.39 + version: 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-redirect': - specifier: 2.0.0-rc.36 - version: 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.39 + version: 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-register-components': - specifier: 2.0.0-rc.34 - version: 2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-shiki': - specifier: 2.0.0-rc.36 - version: 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.37 + version: 2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) link-checker: specifier: ^1.4.2 version: 1.4.2 @@ -45,14 +45,14 @@ importers: specifier: ^10.9.1 version: 10.9.1 vue: - specifier: ^3.4.29 + specifier: ^3.4.38 version: 3.4.38 vuepress: - specifier: 2.0.0-rc.13 - version: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + specifier: 2.0.0-rc.14 + version: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) vuepress-theme-hope: - specifier: 2.0.0-rc.49 - version: 2.0.0-rc.49(@vuepress/plugin-docsearch@2.0.0-rc.28(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.52 + version: 2.0.0-rc.52(@vuepress/plugin-docsearch@2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-prismjs@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) packages: @@ -164,140 +164,140 @@ packages: search-insights: optional: true - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -552,19 +552,19 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@rollup/wasm-node@4.21.0': - resolution: {integrity: sha512-CqLrY1oc68dyB44h4qfAa/4LM+R+xvqaJSTBV0hWeLXiIdXhgrHlaalXOTrL5vWz+mgnyzlUgy3bhTkZjKt1LQ==} + '@rollup/wasm-node@4.20.0': + resolution: {integrity: sha512-NxIRJDju9ZzXwpCZ+TMYEflT/KJPgcamVrkInPwB/jSzEIEhckHGgbC9C8Fkzt77nEZZpfF/H2BedwKfjxO9qQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/core@1.14.1': - resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} + '@shikijs/core@1.13.0': + resolution: {integrity: sha512-Mj5NVfbAXcD1GnwOTSPl8hBn/T8UDpfFQTptp+p41n/CbUcJtOq98WaRD7Lz3hCglYotUTHUWtzu3JhK6XlkAA==} - '@shikijs/transformers@1.14.1': - resolution: {integrity: sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==} + '@shikijs/transformers@1.13.0': + resolution: {integrity: sha512-51aLIT6a93rVGoTxl2+p6hb7ILbTA4p/unoibEAjnPMzHto4cqxhuHyDVgtQur5ANpGsL3ihSGKaZDrpcWH8vQ==} '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} @@ -628,8 +628,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@22.4.1': - resolution: {integrity: sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==} + '@types/node@22.3.0': + resolution: {integrity: sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -685,64 +685,69 @@ packages: '@vue/shared@3.4.38': resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} - '@vuepress/bundler-vite@2.0.0-rc.13': - resolution: {integrity: sha512-dzBM0eH0VvdsMB0+Y1sMpEfTz/elWytTNdjon7LUbda3oHMQOO+IwP0PcA7VNAqqnvMplMhawocaMC+STupymA==} + '@vuepress/bundler-vite@2.0.0-rc.14': + resolution: {integrity: sha512-kttbowYITMCX3ztz78Qb6bMfXRv/GEpNu+nALksu7j/QJQ0gOzI2is68PatbmzZRWOufVsf1Zf0A8BwolmVcXA==} - '@vuepress/cli@2.0.0-rc.13': - resolution: {integrity: sha512-En7iQnwgnmkPAgoT+YqzwgMRTO3uLwIk+ar3E7HnQA//ovZNmoaChkc/C3jjklP5OF3g9CtGT8VjZ9njDjLe/Q==} + '@vuepress/cli@2.0.0-rc.14': + resolution: {integrity: sha512-oYJX1nE6/ohF2tzUtpBAFxRr4MF2kdtab3+AQ897esXzrciQnE2LxPQZ8BUOn6Jb3XYW12FXDdkHrr82rN6XnQ==} hasBin: true - '@vuepress/client@2.0.0-rc.13': - resolution: {integrity: sha512-kFHVyroAFZ+/ZVaItjIXOZA6r+ympWN+C+0yZYVkMpzyDVFdZrl9WazqhwHBIUj0/sA+NLq2o2EvoqvAPa1lFg==} + '@vuepress/client@2.0.0-rc.14': + resolution: {integrity: sha512-ULwxOiWoUi15HWQ6qH60gWjxSXB0797uExCUa4HgHV/8SpIqv4SHFn6jqjo7qCzOxuTqj1RT47JH3oWfUF4XPA==} - '@vuepress/core@2.0.0-rc.13': - resolution: {integrity: sha512-IK+5h2QAtl52g/3M0nGV2r0L+2cy0yhQ1Ez65ij4xs1FoiCEStJIVJSYGl1VMQDkB+MUGJAXZw86lNA2PIjgsg==} + '@vuepress/core@2.0.0-rc.14': + resolution: {integrity: sha512-Ly3fypjXGUgPzjfbXKJeyd59jxJgXkhxhWAGkH/rRyQeV8Nr7Wo1ah3H1MeGhlCRGH1T9Yd3Bz9W7QMoyWFfmg==} - '@vuepress/helper@2.0.0-rc.36': - resolution: {integrity: sha512-J9R9mCh8KXAIE28wvks3TkY7lFKG/zvboz4THs969PtsxbKa08OaEPQ904Pr6Y8y/9VS5Kp9WQDjPcUnlalx6A==} + '@vuepress/helper@2.0.0-rc.39': + resolution: {integrity: sha512-X9KiTUjtrT6gxrDUDJhiB5+/kO4via8yzudowOPu55p/MKtPbShlJw/zEDivH3P4nD1LFWnjWWuEBgZLFymLFQ==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 '@vuepress/helper@2.0.0-rc.41': resolution: {integrity: sha512-kvjDPSTRiILdUa8HXyV44b7dN5gw38bE4KvnpQTwXIApwDnNCv+LY34cTL6UTOEQTjx9UyVUVkWm2/LGCVLidQ==} peerDependencies: vuepress: 2.0.0-rc.14 - '@vuepress/highlighter-helper@2.0.0-rc.36': - resolution: {integrity: sha512-tf4gRyLSKJww3DySnYt/yc9b3vUelqJ78y1BBTOqVmLPrfn3Ig7/1fOv0FxbNg1k+HoxHskN3NS9tQDG+pMp8w==} + '@vuepress/highlighter-helper@2.0.0-rc.39': + resolution: {integrity: sha512-da4wob8vmrB8DGsBsJCF1ox4E50/9Yc3F9CkNvuH/BS/Touk5KabAw36dCDW/420jTrm5UjRgwfVzfkakcaRIQ==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/markdown@2.0.0-rc.13': - resolution: {integrity: sha512-p26OjCj0nMXFBRMPkMgt8VRfFLNF7V6YRqWdDtxipHl6S1y5s965uYgYfxTyr9TLGwnXRsZvE60wItKHftFe5w==} + '@vuepress/markdown@2.0.0-rc.14': + resolution: {integrity: sha512-9xr693gkp71qwEbQLxpo1ybhJ+lA2k5SiuFUgqqrmR2a8CSL3gcmKEGM+y7GMnHvL63U2dYlc9pUOtJ5rG9O0Q==} - '@vuepress/plugin-active-header-links@2.0.0-rc.36': - resolution: {integrity: sha512-qZg51BuyL6bT2zAmUyV+oQvpk2PvoG34TXfb/0p0tKyM8QtqxnUW1Av3+poXrZaKINwLHVMqJPRy8JsB7o3lXQ==} + '@vuepress/plugin-active-header-links@2.0.0-rc.39': + resolution: {integrity: sha512-Nm4srR+/kEoawFikbpXdJmi3dvXKU4RcsuOW6d0Aa6JWdiB8sX9PbCWbJD+ZWvAa8o+ySBBHFNd4exTzfCtBlw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 + + '@vuepress/plugin-back-to-top@2.0.0-rc.39': + resolution: {integrity: sha512-rG9HVgvpxURGfDZeuVRCjXLFHIEqPh1VPqkQpldh1zpDbB4+V2xqq73TYfpjFBRekN8lJZ0JO3BJ8f7p9t4wLg==} + peerDependencies: + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-back-to-top@2.0.0-rc.36': - resolution: {integrity: sha512-RVwXyPaP9En8elNBURPRZZU6D6Meuak34lKxuQYezzOy9Fafgz2JO3LwWYeMbS/8H4trSPnl1JEl3oKjapOwSA==} + '@vuepress/plugin-blog@2.0.0-rc.39': + resolution: {integrity: sha512-YHxsZxlIeJGCcOdEm4c4lQoNHx358Zxu/0tvRC/jEwXgyZUnqSpbMd3FLJ9Yl7CPsp18PMLIN7d8YQOetR17zA==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-blog@2.0.0-rc.36': - resolution: {integrity: sha512-nC0T9UQoYtW+xH/vtsZsNX+vtIN7EItdpzgmnyt+92mK4cT1+T6LRN3UCR+OwYpocYjGnPCa9PixdLFFmNUKnw==} + '@vuepress/plugin-catalog@2.0.0-rc.39': + resolution: {integrity: sha512-WAxCpDAZO4Pzozh6l5zPk/XYXgxAMq96PksgrVjlWsp1c4UKM7QiUMAXKH0UfbgcQhtLJoWQ37F8EZnJAMEXDQ==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-catalog@2.0.0-rc.36': - resolution: {integrity: sha512-NB2vQSNId78gzGuAo/kbBWF8Zhg/Exw+1DgDo2rq0guBDIBWvt9ddZRpyYqFlayDknDXfS5rdPO5Q1A4Fw4gCw==} + '@vuepress/plugin-catalog@2.0.0-rc.41': + resolution: {integrity: sha512-EpLNcM5UNloGlTDOAmb8HDkQTpNDnUh9gfCnD13hgFHZ5wGGA0uARF7JLQCWmhCfCedeSPD5lVGKFhQ4T4QSLw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-comment@2.0.0-rc.36': - resolution: {integrity: sha512-E4Nxc0uBDNUC2WDkYGj5PmTg+ryKYDSU1aHzXZOK2GpTB/1DlcHAKkyEqjooQXAM5x2SVDgOe8J9iEqctyKK7w==} + '@vuepress/plugin-comment@2.0.0-rc.39': + resolution: {integrity: sha512-/oCS+0wH/MtE4c1HUKlqH/tj70oXSz/tfR1hsHj8F8wiZ+IVJxexvtzMKk0vdRmYnH4nqeZh6dg5ggSJjrLEZQ==} peerDependencies: '@waline/client': ^3.1.0 artalk: ^2.8.7 twikoo: ^1.5.0 - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 peerDependenciesMeta: '@waline/client': optional: true @@ -751,111 +756,116 @@ packages: twikoo: optional: true - '@vuepress/plugin-copy-code@2.0.0-rc.36': - resolution: {integrity: sha512-tmSQYFkMVhtYo0uBUdUcX0dYmzaEigk3jqtF3vFOYZ8BmBjjW8BQoDDeJqdrgSV2Q2sdb6tWGdFx7iomyvYq0w==} + '@vuepress/plugin-copy-code@2.0.0-rc.39': + resolution: {integrity: sha512-Udd73yfUvjCQadE+QRXCC+Rw2zxRNsBIcpDcFMzs3Vz93LbZxbG0cv6pO4rdKb3OrFH9M0JTawoWyANZspt3QQ==} + peerDependencies: + vuepress: 2.0.0-rc.14 + + '@vuepress/plugin-copyright@2.0.0-rc.39': + resolution: {integrity: sha512-webOz7vcBydcpqRdLMQYtykEGD5NqZ8ykoZ6dLF9Yk7LteUgsSVUSMm7cJ2vxG2dD/SeH5dPlsr02lH+PH0VbQ==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-copyright@2.0.0-rc.36': - resolution: {integrity: sha512-D1pV6N07L0L7p242gpzsPZZaNF6dpLR0tLRgb3Mc4XNoJ9zBj5hMMVraiJgOR5IMNgUc+Wtr7aJmIGCY4NvPXQ==} + '@vuepress/plugin-docsearch@2.0.0-rc.39': + resolution: {integrity: sha512-ck7JrDyhAjjogCpjFiEZiqs2jBIjfCVeh5tPkLEikDm8yMANPM1PELryvZsjPahSH5LNA6jEJaXTTFBWg2ocWA==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-docsearch@2.0.0-rc.28': - resolution: {integrity: sha512-6ucWxOcNMURKPE8ORCU+KQoigTCLMTH5bfhVRr9ujOV5cM0tjK5f/DRZzelZiEDStcjMPkdN/dCc8ks5aL0qSw==} + '@vuepress/plugin-git@2.0.0-rc.38': + resolution: {integrity: sha512-dRJiZ5PVuhhyu+R2BZOlyeqgxVikUUh2Vf6RNVN2DNWv4VHdYybFQuQ+kYDpldYyzoP8932aFRV0d2ocpvxEug==} peerDependencies: - vuepress: 2.0.0-rc.9 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-git@2.0.0-rc.36': - resolution: {integrity: sha512-5m0LsUyH+SjBsKMggAoLjFf4EkrcOICrixEilyna+sTatsmyYrWNy7bT9SKxMeYJeFQ8rJVE1ch9O7cC2X6ejg==} + '@vuepress/plugin-google-analytics@2.0.0-rc.37': + resolution: {integrity: sha512-NgI8VN9h+BoCEhkOHhYZFRurFmeBKjb+TiLALqlvVJ7cn3XmGVliHDBEWTbbNImp3kEZhKzw0y37muzFQ0Rbfg==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-google-analytics@2.0.0-rc.34': - resolution: {integrity: sha512-NlkS9N6DjQR+ka0XggMl/KyIyAkFRJu8VzpjS8W7ZzO5cwVi/yDpIQ4kme7GwWdnOFd0L9xa3rTZfIyVYSho1w==} + '@vuepress/plugin-links-check@2.0.0-rc.39': + resolution: {integrity: sha512-2lQHIMO49jYcJnEWHf7yoXnuFUrAQC+LfzSvaeCMUzshEIDTJXy96LSCQCjRWwW02GL65qS9ODfr6b8DDuXMgg==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-links-check@2.0.0-rc.36': - resolution: {integrity: sha512-2ZHlgR0U6vxZhRKBvy4UIEmhDC/gO9w/SJ2FITwyIH/LnRyXz3p159/adbzpWTI3XF7PoyruqIWt+dzSmgcAng==} + '@vuepress/plugin-notice@2.0.0-rc.39': + resolution: {integrity: sha512-GNnNIxZJBt2q8XAtgrpCxovEB0vRXjrCccu4TBjPnSimjreo/i7uaHkxDyCb3O9tNQGEd6OaObOkHFBJ7vXaTg==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-notice@2.0.0-rc.36': - resolution: {integrity: sha512-hgwHdgAbc29ARr/ldkRv5EHuRQh/GBal+m8NZWJ/GMHA10Ehnk/QhCIH7ycuFnZgG58OTNcEfIAYAXsuQnD3Bw==} + '@vuepress/plugin-nprogress@2.0.0-rc.39': + resolution: {integrity: sha512-HH+GuR2sxzVQ5uIQxDHnQF5RevjefviLuAbB1UH4u1R6DRUDd9+DrqXm4T/0LJJWo4OCPO4DLzPpmRESjuZifw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-nprogress@2.0.0-rc.36': - resolution: {integrity: sha512-3NK0Thxd80cKgTTbk8CpGlqrqqoH0GCFd+bl2qj1PS3DvhPG7tbzZNdKNGi4PN1FMrwi2ymsDFocyQPcAqXrrg==} + '@vuepress/plugin-photo-swipe@2.0.0-rc.39': + resolution: {integrity: sha512-MS9xlTAEd7/nJHSPphS2diyvyRzuXRk0zYVlBSDcv8ge3X9gxkMhEcOoRfU6PymxMuovJKBIeTE4mvZQ9Wl9eQ==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-photo-swipe@2.0.0-rc.36': - resolution: {integrity: sha512-DRUruI5oLolUI4VL6iRoQYLStMPt4/jJ50z4i5FxocFrmT7MOBczFJ1VYdGLXjP4Yq5Ua7mLi+9P2rG4x8jD0g==} + '@vuepress/plugin-prismjs@2.0.0-rc.39': + resolution: {integrity: sha512-E5bn5akM4OKR3v6S7bzH4Ra+T+3t4LOpyZJ6ABLDif0JPsyPQvtJZy+cEgTG26FcFby6QahUHaIgADFswGKmvg==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-reading-time@2.0.0-rc.36': - resolution: {integrity: sha512-H6WqPIqrQGXcrghPbwC5nuP3gx90iFFUHncQLoKIlKHfnBZ200GxIcMAUK+Zm0DGbpeGk66guo/ZxdKpUoRKdw==} + '@vuepress/plugin-reading-time@2.0.0-rc.39': + resolution: {integrity: sha512-ChfVi6be4hAXd0XIgyfdNGayIQTzRKFZB2JFWB12+TYBJr6TQ7j6tmL7FWOiYPXUPetVPm6CfuY+mdiaBq2vqg==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-redirect@2.0.0-rc.36': - resolution: {integrity: sha512-KPe7vbePxwFpi8ClcSB+U7wMU6+qmfnZo5WXqG0zo/ZuUvBwWgOZrvmndExQ6P3rcxm//NXQnJLq1MkGjCZTsg==} + '@vuepress/plugin-redirect@2.0.0-rc.39': + resolution: {integrity: sha512-vsNeS7Cnu3kr3TG/huDUnwJU4Wv37haGUi64lygC+uDYDZeyBUwfrq+P2Fb5a+tEFCECvrlRdX9zQjSRQcrigg==} hasBin: true peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-register-components@2.0.0-rc.34': - resolution: {integrity: sha512-e1GN+DHUxYGiP7U1WSFfe8WD6e3OOFgnrpb+3FMNBQdS0Y0lL4KVTvOJALfSSINdISbY5AiVimyV7gYcTvMNIQ==} + '@vuepress/plugin-register-components@2.0.0-rc.37': + resolution: {integrity: sha512-Ont6tTX67ZJaozH3sfGkQyaE83oMDqpYC8i34StVmidh8naC2uRcxDeza/orSe0nLvb+LUK/WiABB2ZuYRRTxw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-rtl@2.0.0-rc.36': - resolution: {integrity: sha512-3ucP1Jv7xzBVluCXNW+v1vEawz1/S8zakwVqjwScPZX0DD7VB/kZZ3YDM8/3dd22sarVcfSQdZArhfuDSW4UAA==} + '@vuepress/plugin-rtl@2.0.0-rc.39': + resolution: {integrity: sha512-1ndKbzpGxJ6qLIOjTeZkAcsqq4eJ54hUrhraOmv21UneVIVDSAt80VeKnSwl8p269T94AxqNqfLsnnaCQ5uvRw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-sass-palette@2.0.0-rc.36': - resolution: {integrity: sha512-RNGSVcW2Pmir60VL1Rc1UZxytu6x2KTKHST6CjtxC2pyczoCNiAWmfzVqiTTMkRDoRKM7DJKEj0Q0Zc49KfA3A==} + '@vuepress/plugin-sass-palette@2.0.0-rc.39': + resolution: {integrity: sha512-jBo/4Lz7H9pa7TCqMSFiEyZRowsLCOVHj+yrp0PE1fAwx+qTm9dNSDKauWIKGplFGQqf4BdKITE7hPDoBePiDw==} peerDependencies: sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 peerDependenciesMeta: sass-loader: optional: true - '@vuepress/plugin-seo@2.0.0-rc.36': - resolution: {integrity: sha512-MuBToaW/TGgM1bm8yjq/V8/0PUb5QjMGBh+6enl29t/Pc8CYVGPi2bM2OPHoyyBsYqN6fC83klCVhsSOunlJ2w==} + '@vuepress/plugin-seo@2.0.0-rc.39': + resolution: {integrity: sha512-n6w3ifBU2HK3b6twxJQiiv7vZxjCi0DCgW3Ellp7pNI/uZU6PnfkZ+UjtlHieScThe7A8Q+mxW/T7CyWC6/8cw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-shiki@2.0.0-rc.36': - resolution: {integrity: sha512-ba/vXqnzNcY6LURl7VNKsXlT21DjBd/AEaifXPCmBwpzADmYueSwt9PxnUJMocyLFRpT/OSg5kZkFO1mYdVzGA==} + '@vuepress/plugin-shiki@2.0.0-rc.39': + resolution: {integrity: sha512-QnD8VhOqpkgLCnwLGzcyPY8eC1dam2Navud9DyisLtqWOJ6zmjFZEE1O5elUjh6cPUtarN8bQQ/zn1M1ebRURA==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-sitemap@2.0.0-rc.36': - resolution: {integrity: sha512-vbEpAsueTsonlDhkI5ejh/7qILZRIHjTnvG8F400PETPXlsNGobrDCoLoMkJAYH2aH3zRr7SomH3OqNeWCaARQ==} + '@vuepress/plugin-sitemap@2.0.0-rc.39': + resolution: {integrity: sha512-/dgI8JK4oFaFG3Dmw34cwY5J/gYXNWto7RwR7H8wcK10cWuoT2tNV56BeixWiaqsKj1BZjv2GMwZTLpPgYxgZw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-theme-data@2.0.0-rc.36': - resolution: {integrity: sha512-j60AR1/dUFjrbf2ve9dmEfEOgPgH79bnh7TelQeP5IgymDnCUwd+nMu4iFoDTKELfCQptiPB9p3pQ2IbbQMTnA==} + '@vuepress/plugin-theme-data@2.0.0-rc.39': + resolution: {integrity: sha512-fNwaPpqM46gI23n5d4UrwC8Y+JRDi7mKs1sjawqKU9PdJpUQKd/2lOSOSx/farLqxiswHTQdZtLCxWjvWlcZRw==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/plugin-watermark@2.0.0-rc.36': - resolution: {integrity: sha512-qKkUn74ldTqOC7ZB82evZsykfqkkdCPUdqVy1a8XIwvDZOy7BdAXE7YRBWeqGdDc1EIMam9u6kEzwvYUpQvETQ==} + '@vuepress/plugin-watermark@2.0.0-rc.39': + resolution: {integrity: sha512-16BZnwIZa+AEBcnXI59udHX04/VLiCwrdy8wsdBf3vy5co8/PPyG3iDC1Tlwbkotsuz/+J23KG7MjN4Fr9dFEQ==} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - '@vuepress/shared@2.0.0-rc.13': - resolution: {integrity: sha512-xtruKVH9QqTLIQxbPbU3iZWthLC8uR5yYUzVA6eL+knjHkpCXOlzqMYnlp4xT0tzQNw+gBHWLKo8zVEccSkqug==} + '@vuepress/shared@2.0.0-rc.14': + resolution: {integrity: sha512-VDDnPpz4x1Q07richcVRGbc4qc2RG/6bKoEYSImofTFzvdmHer538ouv8kD2SNU10UrSOpxxUiphnhlhNIe03A==} - '@vuepress/utils@2.0.0-rc.13': - resolution: {integrity: sha512-MbTnyCodo9K6WK7xFwOVEHnhatlq8BsoVmrtM16Swk2igjtexXAJ6OCCXGON1l32fwGGVKFom3bH9seBvqSK7g==} + '@vuepress/utils@2.0.0-rc.14': + resolution: {integrity: sha512-1h/5qcKBeIhIg6SZM2IoZVOaIdFSeQ1CdEWadqQWy1uwupEeVrU3QPkjFyn0vUt0O/EuuVqQcLLC8OuS/wldNw==} '@vueuse/core@10.11.1': resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} @@ -1262,8 +1272,8 @@ packages: domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - electron-to-chromium@1.5.11: - resolution: {integrity: sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==} + electron-to-chromium@1.5.9: + resolution: {integrity: sha512-HfkT8ndXR0SEkU8gBQQM3rz035bpE/hxkZ1YIt4KJPEFES68HfIU6LzKukH0H794Lm83WJtkSAMfEToxCs15VA==} elkjs@0.9.3: resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} @@ -1298,8 +1308,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true @@ -1879,13 +1889,14 @@ packages: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} - postcss-load-config@5.1.0: - resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} peerDependencies: jiti: '>=1.21.0' postcss: '>=8.0.9' tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: jiti: optional: true @@ -1893,6 +1904,8 @@ packages: optional: true tsx: optional: true + yaml: + optional: true postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -1908,6 +1921,10 @@ packages: resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} engines: {node: '>=18'} + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2007,8 +2024,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.14.1: - resolution: {integrity: sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==} + shiki@1.13.0: + resolution: {integrity: sha512-e0dWfnONbEv6xl7FJy3XIhsVHQ/65XHDZl92+6H9+4xWjfdo7pmkqG7Kg47KWtDiEtzM5Z+oEfb4vtRvoZ/X9w==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -2113,8 +2130,8 @@ packages: uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - undici-types@6.19.6: - resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==} + undici-types@6.18.2: + resolution: {integrity: sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==} undici@6.19.7: resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==} @@ -2156,8 +2173,8 @@ packages: engines: {node: '>=8'} hasBin: true - vite@5.2.13: - resolution: {integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==} + vite@5.3.5: + resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2208,8 +2225,8 @@ packages: typescript: optional: true - vuepress-plugin-components@2.0.0-rc.49: - resolution: {integrity: sha512-R6vJJ/ySRS53tmzYCpPF8Cco/ZWIdDTXsGcr1rCuQ00XdSccDGzl/WIkCHWTvuevQvaRlCzxbR1g9RR/BoiRNQ==} + vuepress-plugin-components@2.0.0-rc.52: + resolution: {integrity: sha512-mQRi0XzdUD025ewjBXlhlh948ReOcohMlBEdkxQVNZaLa5OM2mtZm8TJvN1MkSKeiTMZjtzARO1AJNGyhZWFpw==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: artplayer: ^5.0.0 @@ -2218,7 +2235,7 @@ packages: mpegts.js: ^1.7.3 sass-loader: ^14.0.0 vidstack: ^1.11.21 - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 peerDependenciesMeta: artplayer: optional: true @@ -2233,8 +2250,8 @@ packages: vidstack: optional: true - vuepress-plugin-md-enhance@2.0.0-rc.49: - resolution: {integrity: sha512-KpTwYsq91T3sywFYKTYbGKFBshnMSg/HZtrMImvoQzqoFuRIuWR6xPZszG1mJJ+ahajFB5Vzkrhec/u6TVs9JA==} + vuepress-plugin-md-enhance@2.0.0-rc.52: + resolution: {integrity: sha512-4lED2FSelBbtBVE5Hon9FQpCgmG1xQbi3+rFrj/Aa1VF+8PTjqFdG4NkdRTx94beOeu/A5jvWp5TFWMbaXD7hA==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: '@types/reveal.js': ^5.0.0 @@ -2252,7 +2269,7 @@ packages: reveal.js: ^5.0.0 sandpack-vue3: ^3.0.0 sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 peerDependenciesMeta: '@types/reveal.js': optional: true @@ -2285,26 +2302,26 @@ packages: sass-loader: optional: true - vuepress-shared@2.0.0-rc.49: - resolution: {integrity: sha512-bHXbKoiza2ihvBLYdObW2NgDeRnxtoeScaOa2z/Pg9g3COLp+2HYZvNS/Y2izQstJ2VWvjxukoVJzTvpTw9AEQ==} + vuepress-shared@2.0.0-rc.52: + resolution: {integrity: sha512-/Y5Qpl8ueqiggqFAyeJ9U2PhLyE7O5hl3r1k4vER/gKpaeYIqmPxf0ToJMFa3uc4luoNEe/9NJb6LJCrcPjFEA==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - vuepress: 2.0.0-rc.13 + vuepress: 2.0.0-rc.14 - vuepress-theme-hope@2.0.0-rc.49: - resolution: {integrity: sha512-OiWqxBWRpd2g8BV8ODe9Xqxxcvv0l38eyzjtnOXGnL8WAJ0RmHKFpSHHXtTKN5coaEyJb3wK7k4CCBO5RTYCiw==} + vuepress-theme-hope@2.0.0-rc.52: + resolution: {integrity: sha512-QCfIxIQCFOUpJsOUEPi1QtLPUbKjA0alvjb5JJPMGvHqqP2HHOtSuTdoODqy1qWPUg2/GBR/OLjfpqs14joP+w==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.36 - '@vuepress/plugin-feed': 2.0.0-rc.36 - '@vuepress/plugin-prismjs': 2.0.0-rc.36 - '@vuepress/plugin-pwa': 2.0.0-rc.36 - '@vuepress/plugin-redirect': 2.0.0-rc.36 - '@vuepress/plugin-search': 2.0.0-rc.36 + '@vuepress/plugin-docsearch': 2.0.0-rc.39 + '@vuepress/plugin-feed': 2.0.0-rc.39 + '@vuepress/plugin-prismjs': 2.0.0-rc.39 + '@vuepress/plugin-pwa': 2.0.0-rc.39 + '@vuepress/plugin-redirect': 2.0.0-rc.39 + '@vuepress/plugin-search': 2.0.0-rc.39 nodejs-jieba: ^0.1.2 sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.13 - vuepress-plugin-search-pro: 2.0.0-rc.49 + vuepress: 2.0.0-rc.14 + vuepress-plugin-search-pro: 2.0.0-rc.52 peerDependenciesMeta: '@vuepress/plugin-docsearch': optional: true @@ -2325,13 +2342,13 @@ packages: vuepress-plugin-search-pro: optional: true - vuepress@2.0.0-rc.13: - resolution: {integrity: sha512-lhz9EnISXY/s3yDFYe2RLVJcBXN/Ehe+NAFWdadhyX0P9S5AMimvJhsqWoVInnL+HBREsshLibyc8pXGbQrhfw==} + vuepress@2.0.0-rc.14: + resolution: {integrity: sha512-t902FYKFF2MavNQjm/I4gN8etl6iX4PETutu4c1Pt7qQjXF6Hp2eurZaW32O5/TaYWsbVG757FwKodRLj9GDng==} engines: {node: '>=18.16.0'} hasBin: true peerDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.13 - '@vuepress/bundler-webpack': 2.0.0-rc.13 + '@vuepress/bundler-vite': 2.0.0-rc.14 + '@vuepress/bundler-webpack': 2.0.0-rc.14 vue: ^3.4.0 peerDependenciesMeta: '@vuepress/bundler-vite': @@ -2391,11 +2408,6 @@ packages: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} - engines: {node: '>= 14'} - hasBin: true - yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -2562,73 +2574,73 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@esbuild/aix-ppc64@0.20.2': + '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm@0.20.2': + '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-x64@0.20.2': + '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.20.2': + '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-x64@0.20.2': + '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.20.2': + '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.20.2': + '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.20.2': + '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.20.2': + '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-ia32@0.20.2': + '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-loong64@0.20.2': + '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.20.2': + '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.20.2': + '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.20.2': + '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.20.2': + '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.20.2': + '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.20.2': + '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/win32-arm64@0.20.2': + '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-ia32@0.20.2': + '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-x64@0.21.5': optional: true '@jridgewell/sourcemap-codec@1.5.0': {} @@ -2844,7 +2856,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@rollup/wasm-node@4.21.0': + '@rollup/wasm-node@4.20.0': dependencies: '@types/estree': 1.0.5 optionalDependencies: @@ -2852,13 +2864,13 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/core@1.14.1': + '@shikijs/core@1.13.0': dependencies: '@types/hast': 3.0.4 - '@shikijs/transformers@1.14.1': + '@shikijs/transformers@1.13.0': dependencies: - shiki: 1.14.1 + shiki: 1.13.0 '@sindresorhus/merge-streams@2.3.0': {} @@ -2883,7 +2895,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.4.1 + '@types/node': 22.3.0 '@types/hash-sum@1.0.2': {} @@ -2893,7 +2905,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.4.1 + '@types/node': 22.3.0 '@types/katex@0.16.7': {} @@ -2918,13 +2930,13 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@22.4.1': + '@types/node@22.3.0': dependencies: - undici-types: 6.19.6 + undici-types: 6.18.2 '@types/sax@1.2.7': dependencies: - '@types/node': 22.4.1 + '@types/node': 17.0.45 '@types/trusted-types@2.0.7': {} @@ -2934,9 +2946,9 @@ snapshots: '@types/web-bluetooth@0.0.20': {} - '@vitejs/plugin-vue@5.1.2(vite@5.2.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)': + '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)': dependencies: - vite: 5.2.13(@types/node@22.4.1)(sass@1.77.8) + vite: 5.3.5(@types/node@22.3.0)(sass@1.77.8) vue: 3.4.38 '@vue/compiler-core@3.4.38': @@ -2995,19 +3007,19 @@ snapshots: '@vue/shared@3.4.38': {} - '@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8)': + '@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8)': dependencies: - '@vitejs/plugin-vue': 5.1.2(vite@5.2.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) - '@vuepress/client': 2.0.0-rc.13 - '@vuepress/core': 2.0.0-rc.13 - '@vuepress/shared': 2.0.0-rc.13 - '@vuepress/utils': 2.0.0-rc.13 + '@vitejs/plugin-vue': 5.1.2(vite@5.3.5(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + '@vuepress/client': 2.0.0-rc.14 + '@vuepress/core': 2.0.0-rc.14 + '@vuepress/shared': 2.0.0-rc.14 + '@vuepress/utils': 2.0.0-rc.14 autoprefixer: 10.4.20(postcss@8.4.41) connect-history-api-fallback: 2.0.0 postcss: 8.4.41 - postcss-load-config: 5.1.0(postcss@8.4.41) - rollup: '@rollup/wasm-node@4.21.0' - vite: 5.2.13(@types/node@22.4.1)(sass@1.77.8) + postcss-load-config: 6.0.1(postcss@8.4.41) + rollup: '@rollup/wasm-node@4.20.0' + vite: 5.3.5(@types/node@22.3.0)(sass@1.77.8) vue: 3.4.38 vue-router: 4.4.3(vue@3.4.38) transitivePeerDependencies: @@ -3022,67 +3034,68 @@ snapshots: - terser - tsx - typescript + - yaml - '@vuepress/cli@2.0.0-rc.13': + '@vuepress/cli@2.0.0-rc.14': dependencies: - '@vuepress/core': 2.0.0-rc.13 - '@vuepress/shared': 2.0.0-rc.13 - '@vuepress/utils': 2.0.0-rc.13 + '@vuepress/core': 2.0.0-rc.14 + '@vuepress/shared': 2.0.0-rc.14 + '@vuepress/utils': 2.0.0-rc.14 cac: 6.7.14 chokidar: 3.6.0 envinfo: 7.13.0 - esbuild: 0.20.2 + esbuild: 0.21.5 transitivePeerDependencies: - supports-color - typescript - '@vuepress/client@2.0.0-rc.13': + '@vuepress/client@2.0.0-rc.14': dependencies: '@vue/devtools-api': 6.6.3 - '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.14 vue: 3.4.38 vue-router: 4.4.3(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/core@2.0.0-rc.13': + '@vuepress/core@2.0.0-rc.14': dependencies: - '@vuepress/client': 2.0.0-rc.13 - '@vuepress/markdown': 2.0.0-rc.13 - '@vuepress/shared': 2.0.0-rc.13 - '@vuepress/utils': 2.0.0-rc.13 + '@vuepress/client': 2.0.0-rc.14 + '@vuepress/markdown': 2.0.0-rc.14 + '@vuepress/shared': 2.0.0-rc.14 + '@vuepress/utils': 2.0.0-rc.14 vue: 3.4.38 transitivePeerDependencies: - supports-color - typescript - '@vuepress/helper@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/helper@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@vue/shared': 3.4.38 cheerio: 1.0.0-rc.12 fflate: 0.8.2 gray-matter: 4.0.3 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/helper@2.0.0-rc.41(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/helper@2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@vue/shared': 3.4.38 cheerio: 1.0.0 fflate: 0.8.2 gray-matter: 4.0.3 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/highlighter-helper@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/highlighter-helper@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/markdown@2.0.0-rc.13': + '@vuepress/markdown@2.0.0-rc.14': dependencies: '@mdit-vue/plugin-component': 2.1.3 '@mdit-vue/plugin-frontmatter': 2.1.3 @@ -3094,8 +3107,8 @@ snapshots: '@mdit-vue/types': 2.1.0 '@types/markdown-it': 14.1.2 '@types/markdown-it-emoji': 3.0.1 - '@vuepress/shared': 2.0.0-rc.13 - '@vuepress/utils': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.14 + '@vuepress/utils': 2.0.0-rc.14 markdown-it: 14.1.0 markdown-it-anchor: 9.0.1(@types/markdown-it@14.1.2)(markdown-it@14.1.0) markdown-it-emoji: 3.0.0 @@ -3103,81 +3116,89 @@ snapshots: transitivePeerDependencies: - supports-color - '@vuepress/plugin-active-header-links@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-active-header-links@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-back-to-top@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-back-to-top@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-blog@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-blog@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) chokidar: 3.6.0 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-catalog@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + dependencies: + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vue: 3.4.38 + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-catalog@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-catalog@2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-comment@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-comment@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) giscus: 1.5.0 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-copy-code@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-copy-code@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-copyright@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-copyright@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-docsearch@2.0.0-rc.28(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-docsearch@2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@docsearch/css': 3.6.1 '@docsearch/js': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.16.3) '@docsearch/react': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.16.3) - '@vuepress/helper': 2.0.0-rc.41(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) ts-debounce: 4.0.0 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -3187,143 +3208,152 @@ snapshots: - search-insights - typescript - '@vuepress/plugin-git@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-git@2.0.0-rc.38(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: execa: 9.3.1 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/plugin-google-analytics@2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-google-analytics@2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/plugin-links-check@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-links-check@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-notice@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-notice@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-nprogress@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-nprogress@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-photo-swipe@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-photo-swipe@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) photoswipe: 5.4.4 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-reading-time@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-prismjs@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/highlighter-helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + prismjs: 1.29.0 + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + transitivePeerDependencies: + - typescript + + '@vuepress/plugin-reading-time@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + dependencies: + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-redirect@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-redirect@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) cac: 6.7.14 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-register-components@2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-register-components@2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: chokidar: 3.6.0 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/plugin-rtl@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-rtl@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-sass-palette@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-sass-palette@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) chokidar: 3.6.0 sass: 1.77.8 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-seo@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-seo@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-shiki@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-shiki@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@shikijs/transformers': 1.14.1 - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/highlighter-helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@shikijs/transformers': 1.13.0 + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/highlighter-helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) nanoid: 5.0.7 - shiki: 1.14.1 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + shiki: 1.13.0 + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-sitemap@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-sitemap@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) sitemap: 8.0.0 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-theme-data@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-theme-data@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@vue/devtools-api': 6.6.3 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-watermark@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-watermark@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) watermark-js-plus: 1.5.3 transitivePeerDependencies: - typescript - '@vuepress/shared@2.0.0-rc.13': + '@vuepress/shared@2.0.0-rc.14': dependencies: '@mdit-vue/types': 2.1.0 - '@vuepress/utils@2.0.0-rc.13': + '@vuepress/utils@2.0.0-rc.14': dependencies: '@types/debug': 4.1.12 '@types/fs-extra': 11.0.4 '@types/hash-sum': 1.0.2 - '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.14 debug: 4.3.6 fs-extra: 11.2.0 globby: 14.0.2 @@ -3419,7 +3449,7 @@ snapshots: browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.11 + electron-to-chromium: 1.5.9 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -3793,7 +3823,7 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - electron-to-chromium@1.5.11: {} + electron-to-chromium@1.5.9: {} elkjs@0.9.3: {} @@ -3818,31 +3848,31 @@ snapshots: es-errors@1.3.0: {} - esbuild@0.20.2: + esbuild@0.21.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 escalade@3.1.2: {} @@ -4504,10 +4534,9 @@ snapshots: pngjs@5.0.0: {} - postcss-load-config@5.1.0(postcss@8.4.41): + postcss-load-config@6.0.1(postcss@8.4.41): dependencies: lilconfig: 3.1.2 - yaml: 2.5.0 optionalDependencies: postcss: 8.4.41 @@ -4525,6 +4554,8 @@ snapshots: dependencies: parse-ms: 4.0.0 + prismjs@1.29.0: {} + process-nextick-args@2.0.1: {} punycode.js@2.3.1: {} @@ -4623,9 +4654,9 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.14.1: + shiki@1.13.0: dependencies: - '@shikijs/core': 1.14.1 + '@shikijs/core': 1.13.0 '@types/hast': 3.0.4 side-channel@1.0.6: @@ -4725,7 +4756,7 @@ snapshots: uc.micro@2.1.0: {} - undici-types@6.19.6: {} + undici-types@6.18.2: {} undici@6.19.7: {} @@ -4760,13 +4791,13 @@ snapshots: kleur: 4.1.5 sade: 1.8.1 - vite@5.2.13(@types/node@22.4.1)(sass@1.77.8): + vite@5.3.5(@types/node@22.3.0)(sass@1.77.8): dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 postcss: 8.4.41 - rollup: '@rollup/wasm-node@4.21.0' + rollup: '@rollup/wasm-node@4.20.0' optionalDependencies: - '@types/node': 22.4.1 + '@types/node': 22.3.0 fsevents: 2.3.3 sass: 1.77.8 @@ -4787,23 +4818,23 @@ snapshots: '@vue/server-renderer': 3.4.38(vue@3.4.38) '@vue/shared': 3.4.38 - vuepress-plugin-components@2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)): + vuepress-plugin-components@2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): dependencies: '@stackblitz/sdk': 1.11.0 - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) balloon-css: 1.2.0 create-codepen: 2.0.0 qrcode: 1.5.4 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) - vuepress-shared: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress-shared: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) transitivePeerDependencies: - '@vue/composition-api' - typescript - vuepress-plugin-md-enhance@2.0.0-rc.49(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)): + vuepress-plugin-md-enhance@2.0.0-rc.52(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): dependencies: '@mdit/plugin-alert': 0.12.0(markdown-it@14.1.0) '@mdit/plugin-align': 0.12.0(markdown-it@14.1.0) @@ -4829,14 +4860,14 @@ snapshots: '@mdit/plugin-tex': 0.12.0(markdown-it@14.1.0) '@mdit/plugin-uml': 0.12.0(markdown-it@14.1.0) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) balloon-css: 1.2.0 js-yaml: 4.1.0 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) - vuepress-shared: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress-shared: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) optionalDependencies: katex: 0.16.11 mathjax-full: 3.2.2 @@ -4846,9 +4877,9 @@ snapshots: - markdown-it - typescript - vuepress-shared@2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)): + vuepress-shared@2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) cheerio: 1.0.0-rc.12 dayjs: 1.11.12 @@ -4857,34 +4888,34 @@ snapshots: gray-matter: 4.0.3 semver: 7.6.3 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - vuepress-theme-hope@2.0.0-rc.49(@vuepress/plugin-docsearch@2.0.0-rc.28(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)): - dependencies: - '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-active-header-links': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-back-to-top': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-blog': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-catalog': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-comment': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-copy-code': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-copyright': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-git': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-links-check': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-notice': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-nprogress': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-photo-swipe': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-reading-time': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-rtl': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-seo': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-shiki': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sitemap': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-theme-data': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-watermark': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + vuepress-theme-hope@2.0.0-rc.52(@vuepress/plugin-docsearch@2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-prismjs@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): + dependencies: + '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-active-header-links': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-back-to-top': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-blog': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-catalog': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-comment': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-copy-code': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-copyright': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-git': 2.0.0-rc.38(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-links-check': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-notice': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-nprogress': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-photo-swipe': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-reading-time': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-rtl': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-seo': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-shiki': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sitemap': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-theme-data': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-watermark': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) balloon-css: 1.2.0 bcrypt-ts: 5.0.2 @@ -4892,13 +4923,14 @@ snapshots: chokidar: 3.6.0 gray-matter: 4.0.3 vue: 3.4.38 - vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38) - vuepress-plugin-components: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - vuepress-plugin-md-enhance: 2.0.0-rc.49(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - vuepress-shared: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress-plugin-components: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress-plugin-md-enhance: 2.0.0-rc.52(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress-shared: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) optionalDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.28(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-redirect': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-docsearch': 2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-prismjs': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-redirect': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) transitivePeerDependencies: - '@types/reveal.js' - '@vue/composition-api' @@ -4926,17 +4958,17 @@ snapshots: - typescript - vidstack - vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8))(vue@3.4.38): + vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38): dependencies: - '@vuepress/cli': 2.0.0-rc.13 - '@vuepress/client': 2.0.0-rc.13 - '@vuepress/core': 2.0.0-rc.13 - '@vuepress/markdown': 2.0.0-rc.13 - '@vuepress/shared': 2.0.0-rc.13 - '@vuepress/utils': 2.0.0-rc.13 + '@vuepress/cli': 2.0.0-rc.14 + '@vuepress/client': 2.0.0-rc.14 + '@vuepress/core': 2.0.0-rc.14 + '@vuepress/markdown': 2.0.0-rc.14 + '@vuepress/shared': 2.0.0-rc.14 + '@vuepress/utils': 2.0.0-rc.14 vue: 3.4.38 optionalDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.13(@types/node@22.4.1)(sass@1.77.8) + '@vuepress/bundler-vite': 2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8) transitivePeerDependencies: - supports-color - typescript @@ -4983,8 +5015,6 @@ snapshots: yaml@2.3.1: {} - yaml@2.5.0: {} - yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts index 2d760097..8e73b920 100644 --- a/src/.vuepress/theme.ts +++ b/src/.vuepress/theme.ts @@ -3,6 +3,7 @@ import { hopeTheme } from "vuepress-theme-hope"; import { enSidebar } from "./sidebar/index.js"; import { enNavbar } from "./navbar/index.js"; import { + base, siteBase, versionKey, hostnameSEO, @@ -66,17 +67,13 @@ export default hopeTheme({ appId: "H6RNUBSB6E", indexName: "aklivity", apiKey: "bae72797404a23ba5466230146919cae", + indexBase: `/${base}/`, searchParameters: { facetFilters: [`version:${versionKey}`, `product:${siteBase}`], }, }, - shiki: { - themes: { - light: "light-plus", - dark: "dark-plus", - }, - lineNumbers: 3 - }, + shiki: false, + prismjs: true, redirect: true, mdEnhance: { align: true, diff --git a/src/solutions/concepts/kafka-proxies/iot-ingest-control.md b/src/solutions/concepts/kafka-proxies/iot-ingest-control.md index e63e6690..99df940d 100644 --- a/src/solutions/concepts/kafka-proxies/iot-ingest-control.md +++ b/src/solutions/concepts/kafka-proxies/iot-ingest-control.md @@ -20,7 +20,7 @@ The [Zilla Plus for Amazon MSK](https://aws.amazon.com/marketplace/pp/prodview-j ### Deploy with CloudFormation -Follow the [Amazon MSK IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-and-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. +Follow the [Amazon MSK IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. ## Confluent Cloud @@ -28,7 +28,7 @@ The [Zilla Plus for Confluent Cloud](https://aws.amazon.com/marketplace/pp/prodv ### Deploy with CloudFormation -Follow the [Confluent Cloud IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-and-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. +Follow the [Confluent Cloud IoT Ingest and Control](../../how-tos/confluent-cloud/iot-ingest-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. ## Redpanda @@ -36,4 +36,4 @@ The [Zilla Plus for Redpanda](https://aws.amazon.com/marketplace/pp/prodview-sj4 ### Deploy with CloudFormation -Follow the [Redpanda IoT Ingest and Control](../../how-tos/redpanda/iot-ingest-and-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. +Follow the [Redpanda IoT Ingest and Control](../../how-tos/redpanda/iot-ingest-control.md) guide to setup an MQTT broker using a globally trusted TLS server certificate with a wildcard DNS pattern `*.example.aklivity.io` to illustrate the steps. From 715e87494dd118d3dd644cc2a4e812a15017490b Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 16 Aug 2024 12:17:14 -0400 Subject: [PATCH 03/54] update code highlighting theme --- package.json | 20 +- pnpm-lock.yaml | 834 +++++++++++++++++++---------------------- src/.vuepress/theme.ts | 9 +- 3 files changed, 411 insertions(+), 452 deletions(-) diff --git a/package.json b/package.json index baf7bf10..81a1b85c 100644 --- a/package.json +++ b/package.json @@ -22,20 +22,20 @@ "check-schema": "node ./.check-schema" }, "devDependencies": { - "@vuepress/bundler-vite": "2.0.0-rc.14", - "@vuepress/plugin-catalog": "2.0.0-rc.41", - "@vuepress/plugin-docsearch": "2.0.0-rc.39", - "@vuepress/plugin-google-analytics": "2.0.0-rc.37", - "@vuepress/plugin-prismjs": "2.0.0-rc.39", - "@vuepress/plugin-redirect": "2.0.0-rc.39", - "@vuepress/plugin-register-components": "2.0.0-rc.37", + "@vuepress/bundler-vite": "2.0.0-rc.13", + "@vuepress/plugin-catalog": "2.0.0-rc.36", + "@vuepress/plugin-docsearch": "2.0.0-rc.36", + "@vuepress/plugin-google-analytics": "2.0.0-rc.34", + "@vuepress/plugin-redirect": "2.0.0-rc.36", + "@vuepress/plugin-register-components": "2.0.0-rc.34", + "@vuepress/plugin-shiki": "2.0.0-rc.36", "link-checker": "^1.4.2", "markdownlint-cli2": "^0.8.1", "mathjax-full": "^3.2.2", "mermaid": "^10.9.1", - "vue": "^3.4.38", - "vuepress": "2.0.0-rc.14", - "vuepress-theme-hope": "2.0.0-rc.52" + "vue": "^3.4.29", + "vuepress": "2.0.0-rc.13", + "vuepress-theme-hope": "2.0.0-rc.49" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 441de91b..2edc1480 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,26 +12,26 @@ importers: .: devDependencies: '@vuepress/bundler-vite': - specifier: 2.0.0-rc.14 - version: 2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8) + specifier: 2.0.0-rc.13 + version: 2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8) '@vuepress/plugin-catalog': - specifier: 2.0.0-rc.41 - version: 2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.36 + version: 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-docsearch': - specifier: 2.0.0-rc.39 - version: 2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.36 + version: 2.0.0-rc.36(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-google-analytics': - specifier: 2.0.0-rc.37 - version: 2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-prismjs': - specifier: 2.0.0-rc.39 - version: 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.34 + version: 2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-redirect': - specifier: 2.0.0-rc.39 - version: 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.36 + version: 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vuepress/plugin-register-components': - specifier: 2.0.0-rc.37 - version: 2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.34 + version: 2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-shiki': + specifier: 2.0.0-rc.36 + version: 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) link-checker: specifier: ^1.4.2 version: 1.4.2 @@ -45,14 +45,14 @@ importers: specifier: ^10.9.1 version: 10.9.1 vue: - specifier: ^3.4.38 + specifier: ^3.4.29 version: 3.4.38 vuepress: - specifier: 2.0.0-rc.14 - version: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + specifier: 2.0.0-rc.13 + version: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) vuepress-theme-hope: - specifier: 2.0.0-rc.52 - version: 2.0.0-rc.52(@vuepress/plugin-docsearch@2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-prismjs@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + specifier: 2.0.0-rc.49 + version: 2.0.0-rc.49(@vuepress/plugin-docsearch@2.0.0-rc.36(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) packages: @@ -164,140 +164,140 @@ packages: search-insights: optional: true - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -685,69 +685,59 @@ packages: '@vue/shared@3.4.38': resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} - '@vuepress/bundler-vite@2.0.0-rc.14': - resolution: {integrity: sha512-kttbowYITMCX3ztz78Qb6bMfXRv/GEpNu+nALksu7j/QJQ0gOzI2is68PatbmzZRWOufVsf1Zf0A8BwolmVcXA==} + '@vuepress/bundler-vite@2.0.0-rc.13': + resolution: {integrity: sha512-dzBM0eH0VvdsMB0+Y1sMpEfTz/elWytTNdjon7LUbda3oHMQOO+IwP0PcA7VNAqqnvMplMhawocaMC+STupymA==} - '@vuepress/cli@2.0.0-rc.14': - resolution: {integrity: sha512-oYJX1nE6/ohF2tzUtpBAFxRr4MF2kdtab3+AQ897esXzrciQnE2LxPQZ8BUOn6Jb3XYW12FXDdkHrr82rN6XnQ==} + '@vuepress/cli@2.0.0-rc.13': + resolution: {integrity: sha512-En7iQnwgnmkPAgoT+YqzwgMRTO3uLwIk+ar3E7HnQA//ovZNmoaChkc/C3jjklP5OF3g9CtGT8VjZ9njDjLe/Q==} hasBin: true - '@vuepress/client@2.0.0-rc.14': - resolution: {integrity: sha512-ULwxOiWoUi15HWQ6qH60gWjxSXB0797uExCUa4HgHV/8SpIqv4SHFn6jqjo7qCzOxuTqj1RT47JH3oWfUF4XPA==} - - '@vuepress/core@2.0.0-rc.14': - resolution: {integrity: sha512-Ly3fypjXGUgPzjfbXKJeyd59jxJgXkhxhWAGkH/rRyQeV8Nr7Wo1ah3H1MeGhlCRGH1T9Yd3Bz9W7QMoyWFfmg==} + '@vuepress/client@2.0.0-rc.13': + resolution: {integrity: sha512-kFHVyroAFZ+/ZVaItjIXOZA6r+ympWN+C+0yZYVkMpzyDVFdZrl9WazqhwHBIUj0/sA+NLq2o2EvoqvAPa1lFg==} - '@vuepress/helper@2.0.0-rc.39': - resolution: {integrity: sha512-X9KiTUjtrT6gxrDUDJhiB5+/kO4via8yzudowOPu55p/MKtPbShlJw/zEDivH3P4nD1LFWnjWWuEBgZLFymLFQ==} - peerDependencies: - vuepress: 2.0.0-rc.14 + '@vuepress/core@2.0.0-rc.13': + resolution: {integrity: sha512-IK+5h2QAtl52g/3M0nGV2r0L+2cy0yhQ1Ez65ij4xs1FoiCEStJIVJSYGl1VMQDkB+MUGJAXZw86lNA2PIjgsg==} - '@vuepress/helper@2.0.0-rc.41': - resolution: {integrity: sha512-kvjDPSTRiILdUa8HXyV44b7dN5gw38bE4KvnpQTwXIApwDnNCv+LY34cTL6UTOEQTjx9UyVUVkWm2/LGCVLidQ==} + '@vuepress/helper@2.0.0-rc.36': + resolution: {integrity: sha512-J9R9mCh8KXAIE28wvks3TkY7lFKG/zvboz4THs969PtsxbKa08OaEPQ904Pr6Y8y/9VS5Kp9WQDjPcUnlalx6A==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/highlighter-helper@2.0.0-rc.39': - resolution: {integrity: sha512-da4wob8vmrB8DGsBsJCF1ox4E50/9Yc3F9CkNvuH/BS/Touk5KabAw36dCDW/420jTrm5UjRgwfVzfkakcaRIQ==} + '@vuepress/highlighter-helper@2.0.0-rc.36': + resolution: {integrity: sha512-tf4gRyLSKJww3DySnYt/yc9b3vUelqJ78y1BBTOqVmLPrfn3Ig7/1fOv0FxbNg1k+HoxHskN3NS9tQDG+pMp8w==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/markdown@2.0.0-rc.14': - resolution: {integrity: sha512-9xr693gkp71qwEbQLxpo1ybhJ+lA2k5SiuFUgqqrmR2a8CSL3gcmKEGM+y7GMnHvL63U2dYlc9pUOtJ5rG9O0Q==} - - '@vuepress/plugin-active-header-links@2.0.0-rc.39': - resolution: {integrity: sha512-Nm4srR+/kEoawFikbpXdJmi3dvXKU4RcsuOW6d0Aa6JWdiB8sX9PbCWbJD+ZWvAa8o+ySBBHFNd4exTzfCtBlw==} - peerDependencies: - vuepress: 2.0.0-rc.14 + '@vuepress/markdown@2.0.0-rc.13': + resolution: {integrity: sha512-p26OjCj0nMXFBRMPkMgt8VRfFLNF7V6YRqWdDtxipHl6S1y5s965uYgYfxTyr9TLGwnXRsZvE60wItKHftFe5w==} - '@vuepress/plugin-back-to-top@2.0.0-rc.39': - resolution: {integrity: sha512-rG9HVgvpxURGfDZeuVRCjXLFHIEqPh1VPqkQpldh1zpDbB4+V2xqq73TYfpjFBRekN8lJZ0JO3BJ8f7p9t4wLg==} + '@vuepress/plugin-active-header-links@2.0.0-rc.36': + resolution: {integrity: sha512-qZg51BuyL6bT2zAmUyV+oQvpk2PvoG34TXfb/0p0tKyM8QtqxnUW1Av3+poXrZaKINwLHVMqJPRy8JsB7o3lXQ==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-blog@2.0.0-rc.39': - resolution: {integrity: sha512-YHxsZxlIeJGCcOdEm4c4lQoNHx358Zxu/0tvRC/jEwXgyZUnqSpbMd3FLJ9Yl7CPsp18PMLIN7d8YQOetR17zA==} + '@vuepress/plugin-back-to-top@2.0.0-rc.36': + resolution: {integrity: sha512-RVwXyPaP9En8elNBURPRZZU6D6Meuak34lKxuQYezzOy9Fafgz2JO3LwWYeMbS/8H4trSPnl1JEl3oKjapOwSA==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-catalog@2.0.0-rc.39': - resolution: {integrity: sha512-WAxCpDAZO4Pzozh6l5zPk/XYXgxAMq96PksgrVjlWsp1c4UKM7QiUMAXKH0UfbgcQhtLJoWQ37F8EZnJAMEXDQ==} + '@vuepress/plugin-blog@2.0.0-rc.36': + resolution: {integrity: sha512-nC0T9UQoYtW+xH/vtsZsNX+vtIN7EItdpzgmnyt+92mK4cT1+T6LRN3UCR+OwYpocYjGnPCa9PixdLFFmNUKnw==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-catalog@2.0.0-rc.41': - resolution: {integrity: sha512-EpLNcM5UNloGlTDOAmb8HDkQTpNDnUh9gfCnD13hgFHZ5wGGA0uARF7JLQCWmhCfCedeSPD5lVGKFhQ4T4QSLw==} + '@vuepress/plugin-catalog@2.0.0-rc.36': + resolution: {integrity: sha512-NB2vQSNId78gzGuAo/kbBWF8Zhg/Exw+1DgDo2rq0guBDIBWvt9ddZRpyYqFlayDknDXfS5rdPO5Q1A4Fw4gCw==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-comment@2.0.0-rc.39': - resolution: {integrity: sha512-/oCS+0wH/MtE4c1HUKlqH/tj70oXSz/tfR1hsHj8F8wiZ+IVJxexvtzMKk0vdRmYnH4nqeZh6dg5ggSJjrLEZQ==} + '@vuepress/plugin-comment@2.0.0-rc.36': + resolution: {integrity: sha512-E4Nxc0uBDNUC2WDkYGj5PmTg+ryKYDSU1aHzXZOK2GpTB/1DlcHAKkyEqjooQXAM5x2SVDgOe8J9iEqctyKK7w==} peerDependencies: '@waline/client': ^3.1.0 artalk: ^2.8.7 twikoo: ^1.5.0 - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 peerDependenciesMeta: '@waline/client': optional: true @@ -756,116 +746,111 @@ packages: twikoo: optional: true - '@vuepress/plugin-copy-code@2.0.0-rc.39': - resolution: {integrity: sha512-Udd73yfUvjCQadE+QRXCC+Rw2zxRNsBIcpDcFMzs3Vz93LbZxbG0cv6pO4rdKb3OrFH9M0JTawoWyANZspt3QQ==} + '@vuepress/plugin-copy-code@2.0.0-rc.36': + resolution: {integrity: sha512-tmSQYFkMVhtYo0uBUdUcX0dYmzaEigk3jqtF3vFOYZ8BmBjjW8BQoDDeJqdrgSV2Q2sdb6tWGdFx7iomyvYq0w==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-copyright@2.0.0-rc.39': - resolution: {integrity: sha512-webOz7vcBydcpqRdLMQYtykEGD5NqZ8ykoZ6dLF9Yk7LteUgsSVUSMm7cJ2vxG2dD/SeH5dPlsr02lH+PH0VbQ==} + '@vuepress/plugin-copyright@2.0.0-rc.36': + resolution: {integrity: sha512-D1pV6N07L0L7p242gpzsPZZaNF6dpLR0tLRgb3Mc4XNoJ9zBj5hMMVraiJgOR5IMNgUc+Wtr7aJmIGCY4NvPXQ==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-docsearch@2.0.0-rc.39': - resolution: {integrity: sha512-ck7JrDyhAjjogCpjFiEZiqs2jBIjfCVeh5tPkLEikDm8yMANPM1PELryvZsjPahSH5LNA6jEJaXTTFBWg2ocWA==} + '@vuepress/plugin-docsearch@2.0.0-rc.36': + resolution: {integrity: sha512-TmzkArujL3pfgWU0QoFjKieC1fUx9JyD1exKqfjgpV8wIQEAPha63byRzOJfcPF0TR0onXWLSZ9eT9efIPCnag==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-git@2.0.0-rc.38': - resolution: {integrity: sha512-dRJiZ5PVuhhyu+R2BZOlyeqgxVikUUh2Vf6RNVN2DNWv4VHdYybFQuQ+kYDpldYyzoP8932aFRV0d2ocpvxEug==} + '@vuepress/plugin-git@2.0.0-rc.36': + resolution: {integrity: sha512-5m0LsUyH+SjBsKMggAoLjFf4EkrcOICrixEilyna+sTatsmyYrWNy7bT9SKxMeYJeFQ8rJVE1ch9O7cC2X6ejg==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-google-analytics@2.0.0-rc.37': - resolution: {integrity: sha512-NgI8VN9h+BoCEhkOHhYZFRurFmeBKjb+TiLALqlvVJ7cn3XmGVliHDBEWTbbNImp3kEZhKzw0y37muzFQ0Rbfg==} + '@vuepress/plugin-google-analytics@2.0.0-rc.34': + resolution: {integrity: sha512-NlkS9N6DjQR+ka0XggMl/KyIyAkFRJu8VzpjS8W7ZzO5cwVi/yDpIQ4kme7GwWdnOFd0L9xa3rTZfIyVYSho1w==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-links-check@2.0.0-rc.39': - resolution: {integrity: sha512-2lQHIMO49jYcJnEWHf7yoXnuFUrAQC+LfzSvaeCMUzshEIDTJXy96LSCQCjRWwW02GL65qS9ODfr6b8DDuXMgg==} + '@vuepress/plugin-links-check@2.0.0-rc.36': + resolution: {integrity: sha512-2ZHlgR0U6vxZhRKBvy4UIEmhDC/gO9w/SJ2FITwyIH/LnRyXz3p159/adbzpWTI3XF7PoyruqIWt+dzSmgcAng==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-notice@2.0.0-rc.39': - resolution: {integrity: sha512-GNnNIxZJBt2q8XAtgrpCxovEB0vRXjrCccu4TBjPnSimjreo/i7uaHkxDyCb3O9tNQGEd6OaObOkHFBJ7vXaTg==} + '@vuepress/plugin-notice@2.0.0-rc.36': + resolution: {integrity: sha512-hgwHdgAbc29ARr/ldkRv5EHuRQh/GBal+m8NZWJ/GMHA10Ehnk/QhCIH7ycuFnZgG58OTNcEfIAYAXsuQnD3Bw==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-nprogress@2.0.0-rc.39': - resolution: {integrity: sha512-HH+GuR2sxzVQ5uIQxDHnQF5RevjefviLuAbB1UH4u1R6DRUDd9+DrqXm4T/0LJJWo4OCPO4DLzPpmRESjuZifw==} + '@vuepress/plugin-nprogress@2.0.0-rc.36': + resolution: {integrity: sha512-3NK0Thxd80cKgTTbk8CpGlqrqqoH0GCFd+bl2qj1PS3DvhPG7tbzZNdKNGi4PN1FMrwi2ymsDFocyQPcAqXrrg==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-photo-swipe@2.0.0-rc.39': - resolution: {integrity: sha512-MS9xlTAEd7/nJHSPphS2diyvyRzuXRk0zYVlBSDcv8ge3X9gxkMhEcOoRfU6PymxMuovJKBIeTE4mvZQ9Wl9eQ==} + '@vuepress/plugin-photo-swipe@2.0.0-rc.36': + resolution: {integrity: sha512-DRUruI5oLolUI4VL6iRoQYLStMPt4/jJ50z4i5FxocFrmT7MOBczFJ1VYdGLXjP4Yq5Ua7mLi+9P2rG4x8jD0g==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-prismjs@2.0.0-rc.39': - resolution: {integrity: sha512-E5bn5akM4OKR3v6S7bzH4Ra+T+3t4LOpyZJ6ABLDif0JPsyPQvtJZy+cEgTG26FcFby6QahUHaIgADFswGKmvg==} + '@vuepress/plugin-reading-time@2.0.0-rc.36': + resolution: {integrity: sha512-H6WqPIqrQGXcrghPbwC5nuP3gx90iFFUHncQLoKIlKHfnBZ200GxIcMAUK+Zm0DGbpeGk66guo/ZxdKpUoRKdw==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-reading-time@2.0.0-rc.39': - resolution: {integrity: sha512-ChfVi6be4hAXd0XIgyfdNGayIQTzRKFZB2JFWB12+TYBJr6TQ7j6tmL7FWOiYPXUPetVPm6CfuY+mdiaBq2vqg==} - peerDependencies: - vuepress: 2.0.0-rc.14 - - '@vuepress/plugin-redirect@2.0.0-rc.39': - resolution: {integrity: sha512-vsNeS7Cnu3kr3TG/huDUnwJU4Wv37haGUi64lygC+uDYDZeyBUwfrq+P2Fb5a+tEFCECvrlRdX9zQjSRQcrigg==} + '@vuepress/plugin-redirect@2.0.0-rc.36': + resolution: {integrity: sha512-KPe7vbePxwFpi8ClcSB+U7wMU6+qmfnZo5WXqG0zo/ZuUvBwWgOZrvmndExQ6P3rcxm//NXQnJLq1MkGjCZTsg==} hasBin: true peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-register-components@2.0.0-rc.37': - resolution: {integrity: sha512-Ont6tTX67ZJaozH3sfGkQyaE83oMDqpYC8i34StVmidh8naC2uRcxDeza/orSe0nLvb+LUK/WiABB2ZuYRRTxw==} + '@vuepress/plugin-register-components@2.0.0-rc.34': + resolution: {integrity: sha512-e1GN+DHUxYGiP7U1WSFfe8WD6e3OOFgnrpb+3FMNBQdS0Y0lL4KVTvOJALfSSINdISbY5AiVimyV7gYcTvMNIQ==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-rtl@2.0.0-rc.39': - resolution: {integrity: sha512-1ndKbzpGxJ6qLIOjTeZkAcsqq4eJ54hUrhraOmv21UneVIVDSAt80VeKnSwl8p269T94AxqNqfLsnnaCQ5uvRw==} + '@vuepress/plugin-rtl@2.0.0-rc.36': + resolution: {integrity: sha512-3ucP1Jv7xzBVluCXNW+v1vEawz1/S8zakwVqjwScPZX0DD7VB/kZZ3YDM8/3dd22sarVcfSQdZArhfuDSW4UAA==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-sass-palette@2.0.0-rc.39': - resolution: {integrity: sha512-jBo/4Lz7H9pa7TCqMSFiEyZRowsLCOVHj+yrp0PE1fAwx+qTm9dNSDKauWIKGplFGQqf4BdKITE7hPDoBePiDw==} + '@vuepress/plugin-sass-palette@2.0.0-rc.36': + resolution: {integrity: sha512-RNGSVcW2Pmir60VL1Rc1UZxytu6x2KTKHST6CjtxC2pyczoCNiAWmfzVqiTTMkRDoRKM7DJKEj0Q0Zc49KfA3A==} peerDependencies: sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 peerDependenciesMeta: sass-loader: optional: true - '@vuepress/plugin-seo@2.0.0-rc.39': - resolution: {integrity: sha512-n6w3ifBU2HK3b6twxJQiiv7vZxjCi0DCgW3Ellp7pNI/uZU6PnfkZ+UjtlHieScThe7A8Q+mxW/T7CyWC6/8cw==} + '@vuepress/plugin-seo@2.0.0-rc.36': + resolution: {integrity: sha512-MuBToaW/TGgM1bm8yjq/V8/0PUb5QjMGBh+6enl29t/Pc8CYVGPi2bM2OPHoyyBsYqN6fC83klCVhsSOunlJ2w==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-shiki@2.0.0-rc.39': - resolution: {integrity: sha512-QnD8VhOqpkgLCnwLGzcyPY8eC1dam2Navud9DyisLtqWOJ6zmjFZEE1O5elUjh6cPUtarN8bQQ/zn1M1ebRURA==} + '@vuepress/plugin-shiki@2.0.0-rc.36': + resolution: {integrity: sha512-ba/vXqnzNcY6LURl7VNKsXlT21DjBd/AEaifXPCmBwpzADmYueSwt9PxnUJMocyLFRpT/OSg5kZkFO1mYdVzGA==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-sitemap@2.0.0-rc.39': - resolution: {integrity: sha512-/dgI8JK4oFaFG3Dmw34cwY5J/gYXNWto7RwR7H8wcK10cWuoT2tNV56BeixWiaqsKj1BZjv2GMwZTLpPgYxgZw==} + '@vuepress/plugin-sitemap@2.0.0-rc.36': + resolution: {integrity: sha512-vbEpAsueTsonlDhkI5ejh/7qILZRIHjTnvG8F400PETPXlsNGobrDCoLoMkJAYH2aH3zRr7SomH3OqNeWCaARQ==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-theme-data@2.0.0-rc.39': - resolution: {integrity: sha512-fNwaPpqM46gI23n5d4UrwC8Y+JRDi7mKs1sjawqKU9PdJpUQKd/2lOSOSx/farLqxiswHTQdZtLCxWjvWlcZRw==} + '@vuepress/plugin-theme-data@2.0.0-rc.36': + resolution: {integrity: sha512-j60AR1/dUFjrbf2ve9dmEfEOgPgH79bnh7TelQeP5IgymDnCUwd+nMu4iFoDTKELfCQptiPB9p3pQ2IbbQMTnA==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/plugin-watermark@2.0.0-rc.39': - resolution: {integrity: sha512-16BZnwIZa+AEBcnXI59udHX04/VLiCwrdy8wsdBf3vy5co8/PPyG3iDC1Tlwbkotsuz/+J23KG7MjN4Fr9dFEQ==} + '@vuepress/plugin-watermark@2.0.0-rc.36': + resolution: {integrity: sha512-qKkUn74ldTqOC7ZB82evZsykfqkkdCPUdqVy1a8XIwvDZOy7BdAXE7YRBWeqGdDc1EIMam9u6kEzwvYUpQvETQ==} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - '@vuepress/shared@2.0.0-rc.14': - resolution: {integrity: sha512-VDDnPpz4x1Q07richcVRGbc4qc2RG/6bKoEYSImofTFzvdmHer538ouv8kD2SNU10UrSOpxxUiphnhlhNIe03A==} + '@vuepress/shared@2.0.0-rc.13': + resolution: {integrity: sha512-xtruKVH9QqTLIQxbPbU3iZWthLC8uR5yYUzVA6eL+knjHkpCXOlzqMYnlp4xT0tzQNw+gBHWLKo8zVEccSkqug==} - '@vuepress/utils@2.0.0-rc.14': - resolution: {integrity: sha512-1h/5qcKBeIhIg6SZM2IoZVOaIdFSeQ1CdEWadqQWy1uwupEeVrU3QPkjFyn0vUt0O/EuuVqQcLLC8OuS/wldNw==} + '@vuepress/utils@2.0.0-rc.13': + resolution: {integrity: sha512-MbTnyCodo9K6WK7xFwOVEHnhatlq8BsoVmrtM16Swk2igjtexXAJ6OCCXGON1l32fwGGVKFom3bH9seBvqSK7g==} '@vueuse/core@10.11.1': resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} @@ -1308,8 +1293,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} hasBin: true @@ -1889,14 +1874,13 @@ packages: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + postcss-load-config@5.1.0: + resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} engines: {node: '>= 18'} peerDependencies: jiti: '>=1.21.0' postcss: '>=8.0.9' tsx: ^4.8.1 - yaml: ^2.4.2 peerDependenciesMeta: jiti: optional: true @@ -1904,8 +1888,6 @@ packages: optional: true tsx: optional: true - yaml: - optional: true postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -1921,10 +1903,6 @@ packages: resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} engines: {node: '>=18'} - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2173,8 +2151,8 @@ packages: engines: {node: '>=8'} hasBin: true - vite@5.3.5: - resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} + vite@5.2.13: + resolution: {integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2225,8 +2203,8 @@ packages: typescript: optional: true - vuepress-plugin-components@2.0.0-rc.52: - resolution: {integrity: sha512-mQRi0XzdUD025ewjBXlhlh948ReOcohMlBEdkxQVNZaLa5OM2mtZm8TJvN1MkSKeiTMZjtzARO1AJNGyhZWFpw==} + vuepress-plugin-components@2.0.0-rc.49: + resolution: {integrity: sha512-R6vJJ/ySRS53tmzYCpPF8Cco/ZWIdDTXsGcr1rCuQ00XdSccDGzl/WIkCHWTvuevQvaRlCzxbR1g9RR/BoiRNQ==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: artplayer: ^5.0.0 @@ -2235,7 +2213,7 @@ packages: mpegts.js: ^1.7.3 sass-loader: ^14.0.0 vidstack: ^1.11.21 - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 peerDependenciesMeta: artplayer: optional: true @@ -2250,8 +2228,8 @@ packages: vidstack: optional: true - vuepress-plugin-md-enhance@2.0.0-rc.52: - resolution: {integrity: sha512-4lED2FSelBbtBVE5Hon9FQpCgmG1xQbi3+rFrj/Aa1VF+8PTjqFdG4NkdRTx94beOeu/A5jvWp5TFWMbaXD7hA==} + vuepress-plugin-md-enhance@2.0.0-rc.49: + resolution: {integrity: sha512-KpTwYsq91T3sywFYKTYbGKFBshnMSg/HZtrMImvoQzqoFuRIuWR6xPZszG1mJJ+ahajFB5Vzkrhec/u6TVs9JA==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: '@types/reveal.js': ^5.0.0 @@ -2269,7 +2247,7 @@ packages: reveal.js: ^5.0.0 sandpack-vue3: ^3.0.0 sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 peerDependenciesMeta: '@types/reveal.js': optional: true @@ -2302,26 +2280,26 @@ packages: sass-loader: optional: true - vuepress-shared@2.0.0-rc.52: - resolution: {integrity: sha512-/Y5Qpl8ueqiggqFAyeJ9U2PhLyE7O5hl3r1k4vER/gKpaeYIqmPxf0ToJMFa3uc4luoNEe/9NJb6LJCrcPjFEA==} + vuepress-shared@2.0.0-rc.49: + resolution: {integrity: sha512-bHXbKoiza2ihvBLYdObW2NgDeRnxtoeScaOa2z/Pg9g3COLp+2HYZvNS/Y2izQstJ2VWvjxukoVJzTvpTw9AEQ==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - vuepress: 2.0.0-rc.14 + vuepress: 2.0.0-rc.13 - vuepress-theme-hope@2.0.0-rc.52: - resolution: {integrity: sha512-QCfIxIQCFOUpJsOUEPi1QtLPUbKjA0alvjb5JJPMGvHqqP2HHOtSuTdoODqy1qWPUg2/GBR/OLjfpqs14joP+w==} + vuepress-theme-hope@2.0.0-rc.49: + resolution: {integrity: sha512-OiWqxBWRpd2g8BV8ODe9Xqxxcvv0l38eyzjtnOXGnL8WAJ0RmHKFpSHHXtTKN5coaEyJb3wK7k4CCBO5RTYCiw==} engines: {node: '>=18.19.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'} peerDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.39 - '@vuepress/plugin-feed': 2.0.0-rc.39 - '@vuepress/plugin-prismjs': 2.0.0-rc.39 - '@vuepress/plugin-pwa': 2.0.0-rc.39 - '@vuepress/plugin-redirect': 2.0.0-rc.39 - '@vuepress/plugin-search': 2.0.0-rc.39 + '@vuepress/plugin-docsearch': 2.0.0-rc.36 + '@vuepress/plugin-feed': 2.0.0-rc.36 + '@vuepress/plugin-prismjs': 2.0.0-rc.36 + '@vuepress/plugin-pwa': 2.0.0-rc.36 + '@vuepress/plugin-redirect': 2.0.0-rc.36 + '@vuepress/plugin-search': 2.0.0-rc.36 nodejs-jieba: ^0.1.2 sass-loader: ^14.0.0 - vuepress: 2.0.0-rc.14 - vuepress-plugin-search-pro: 2.0.0-rc.52 + vuepress: 2.0.0-rc.13 + vuepress-plugin-search-pro: 2.0.0-rc.49 peerDependenciesMeta: '@vuepress/plugin-docsearch': optional: true @@ -2342,13 +2320,13 @@ packages: vuepress-plugin-search-pro: optional: true - vuepress@2.0.0-rc.14: - resolution: {integrity: sha512-t902FYKFF2MavNQjm/I4gN8etl6iX4PETutu4c1Pt7qQjXF6Hp2eurZaW32O5/TaYWsbVG757FwKodRLj9GDng==} + vuepress@2.0.0-rc.13: + resolution: {integrity: sha512-lhz9EnISXY/s3yDFYe2RLVJcBXN/Ehe+NAFWdadhyX0P9S5AMimvJhsqWoVInnL+HBREsshLibyc8pXGbQrhfw==} engines: {node: '>=18.16.0'} hasBin: true peerDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.14 - '@vuepress/bundler-webpack': 2.0.0-rc.14 + '@vuepress/bundler-vite': 2.0.0-rc.13 + '@vuepress/bundler-webpack': 2.0.0-rc.13 vue: ^3.4.0 peerDependenciesMeta: '@vuepress/bundler-vite': @@ -2408,6 +2386,11 @@ packages: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -2574,73 +2557,73 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.20.2': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm64@0.20.2': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/android-arm@0.20.2': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/android-x64@0.20.2': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/darwin-arm64@0.20.2': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/darwin-x64@0.20.2': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/freebsd-arm64@0.20.2': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/freebsd-x64@0.20.2': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-arm64@0.20.2': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-arm@0.20.2': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-ia32@0.20.2': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-loong64@0.20.2': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-mips64el@0.20.2': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-ppc64@0.20.2': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-riscv64@0.20.2': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-s390x@0.20.2': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-x64@0.20.2': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-x64@0.20.2': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-x64@0.20.2': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/sunos-x64@0.20.2': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/win32-arm64@0.20.2': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-ia32@0.20.2': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-x64@0.20.2': optional: true '@jridgewell/sourcemap-codec@1.5.0': {} @@ -2936,7 +2919,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 22.3.0 '@types/trusted-types@2.0.7': {} @@ -2946,9 +2929,9 @@ snapshots: '@types/web-bluetooth@0.0.20': {} - '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)': + '@vitejs/plugin-vue@5.1.2(vite@5.2.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)': dependencies: - vite: 5.3.5(@types/node@22.3.0)(sass@1.77.8) + vite: 5.2.13(@types/node@22.3.0)(sass@1.77.8) vue: 3.4.38 '@vue/compiler-core@3.4.38': @@ -3007,19 +2990,19 @@ snapshots: '@vue/shared@3.4.38': {} - '@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8)': + '@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8)': dependencies: - '@vitejs/plugin-vue': 5.1.2(vite@5.3.5(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/client': 2.0.0-rc.14 - '@vuepress/core': 2.0.0-rc.14 - '@vuepress/shared': 2.0.0-rc.14 - '@vuepress/utils': 2.0.0-rc.14 + '@vitejs/plugin-vue': 5.1.2(vite@5.2.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + '@vuepress/client': 2.0.0-rc.13 + '@vuepress/core': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 autoprefixer: 10.4.20(postcss@8.4.41) connect-history-api-fallback: 2.0.0 postcss: 8.4.41 - postcss-load-config: 6.0.1(postcss@8.4.41) + postcss-load-config: 5.1.0(postcss@8.4.41) rollup: '@rollup/wasm-node@4.20.0' - vite: 5.3.5(@types/node@22.3.0)(sass@1.77.8) + vite: 5.2.13(@types/node@22.3.0)(sass@1.77.8) vue: 3.4.38 vue-router: 4.4.3(vue@3.4.38) transitivePeerDependencies: @@ -3034,68 +3017,56 @@ snapshots: - terser - tsx - typescript - - yaml - '@vuepress/cli@2.0.0-rc.14': + '@vuepress/cli@2.0.0-rc.13': dependencies: - '@vuepress/core': 2.0.0-rc.14 - '@vuepress/shared': 2.0.0-rc.14 - '@vuepress/utils': 2.0.0-rc.14 + '@vuepress/core': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 cac: 6.7.14 chokidar: 3.6.0 envinfo: 7.13.0 - esbuild: 0.21.5 + esbuild: 0.20.2 transitivePeerDependencies: - supports-color - typescript - '@vuepress/client@2.0.0-rc.14': + '@vuepress/client@2.0.0-rc.13': dependencies: '@vue/devtools-api': 6.6.3 - '@vuepress/shared': 2.0.0-rc.14 + '@vuepress/shared': 2.0.0-rc.13 vue: 3.4.38 vue-router: 4.4.3(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/core@2.0.0-rc.14': + '@vuepress/core@2.0.0-rc.13': dependencies: - '@vuepress/client': 2.0.0-rc.14 - '@vuepress/markdown': 2.0.0-rc.14 - '@vuepress/shared': 2.0.0-rc.14 - '@vuepress/utils': 2.0.0-rc.14 + '@vuepress/client': 2.0.0-rc.13 + '@vuepress/markdown': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 vue: 3.4.38 transitivePeerDependencies: - supports-color - typescript - '@vuepress/helper@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/helper@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@vue/shared': 3.4.38 cheerio: 1.0.0-rc.12 fflate: 0.8.2 gray-matter: 4.0.3 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/helper@2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/highlighter-helper@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vue/shared': 3.4.38 - cheerio: 1.0.0 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - transitivePeerDependencies: - - typescript + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/highlighter-helper@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': - dependencies: - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - - '@vuepress/markdown@2.0.0-rc.14': + '@vuepress/markdown@2.0.0-rc.13': dependencies: '@mdit-vue/plugin-component': 2.1.3 '@mdit-vue/plugin-frontmatter': 2.1.3 @@ -3107,8 +3078,8 @@ snapshots: '@mdit-vue/types': 2.1.0 '@types/markdown-it': 14.1.2 '@types/markdown-it-emoji': 3.0.1 - '@vuepress/shared': 2.0.0-rc.14 - '@vuepress/utils': 2.0.0-rc.14 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 markdown-it: 14.1.0 markdown-it-anchor: 9.0.1(@types/markdown-it@14.1.2)(markdown-it@14.1.0) markdown-it-emoji: 3.0.0 @@ -3116,89 +3087,81 @@ snapshots: transitivePeerDependencies: - supports-color - '@vuepress/plugin-active-header-links@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-active-header-links@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-back-to-top@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-back-to-top@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-blog@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-blog@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) chokidar: 3.6.0 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-catalog@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-catalog@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-catalog@2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-comment@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.41(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-comment@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': - dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) giscus: 1.5.0 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-copy-code@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-copy-code@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-copyright@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-copyright@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-docsearch@2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-docsearch@2.0.0-rc.36(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@docsearch/css': 3.6.1 '@docsearch/js': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.16.3) '@docsearch/react': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.16.3) - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) ts-debounce: 4.0.0 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -3208,152 +3171,143 @@ snapshots: - search-insights - typescript - '@vuepress/plugin-git@2.0.0-rc.38(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-git@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: execa: 9.3.1 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/plugin-google-analytics@2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-google-analytics@2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/plugin-links-check@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-links-check@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-notice@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-notice@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-nprogress@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-nprogress@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-photo-swipe@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-photo-swipe@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) photoswipe: 5.4.4 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-prismjs@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': - dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/highlighter-helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - prismjs: 1.29.0 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-reading-time@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-reading-time@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-redirect@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-redirect@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) cac: 6.7.14 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - '@vuepress/plugin-register-components@2.0.0-rc.37(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-register-components@2.0.0-rc.34(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: chokidar: 3.6.0 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - '@vuepress/plugin-rtl@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-rtl@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-sass-palette@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-sass-palette@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) chokidar: 3.6.0 sass: 1.77.8 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-seo@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-seo@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-shiki@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-shiki@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@shikijs/transformers': 1.13.0 - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/highlighter-helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/highlighter-helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) nanoid: 5.0.7 shiki: 1.13.0 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-sitemap@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-sitemap@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) sitemap: 8.0.0 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-theme-data@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-theme-data@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: '@vue/devtools-api': 6.6.3 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - typescript - '@vuepress/plugin-watermark@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': + '@vuepress/plugin-watermark@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38))': dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) watermark-js-plus: 1.5.3 transitivePeerDependencies: - typescript - '@vuepress/shared@2.0.0-rc.14': + '@vuepress/shared@2.0.0-rc.13': dependencies: '@mdit-vue/types': 2.1.0 - '@vuepress/utils@2.0.0-rc.14': + '@vuepress/utils@2.0.0-rc.13': dependencies: '@types/debug': 4.1.12 '@types/fs-extra': 11.0.4 '@types/hash-sum': 1.0.2 - '@vuepress/shared': 2.0.0-rc.14 + '@vuepress/shared': 2.0.0-rc.13 debug: 4.3.6 fs-extra: 11.2.0 globby: 14.0.2 @@ -3848,31 +3802,31 @@ snapshots: es-errors@1.3.0: {} - esbuild@0.21.5: + esbuild@0.20.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 escalade@3.1.2: {} @@ -4534,9 +4488,10 @@ snapshots: pngjs@5.0.0: {} - postcss-load-config@6.0.1(postcss@8.4.41): + postcss-load-config@5.1.0(postcss@8.4.41): dependencies: lilconfig: 3.1.2 + yaml: 2.5.0 optionalDependencies: postcss: 8.4.41 @@ -4554,8 +4509,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - prismjs@1.29.0: {} - process-nextick-args@2.0.1: {} punycode.js@2.3.1: {} @@ -4791,9 +4744,9 @@ snapshots: kleur: 4.1.5 sade: 1.8.1 - vite@5.3.5(@types/node@22.3.0)(sass@1.77.8): + vite@5.2.13(@types/node@22.3.0)(sass@1.77.8): dependencies: - esbuild: 0.21.5 + esbuild: 0.20.2 postcss: 8.4.41 rollup: '@rollup/wasm-node@4.20.0' optionalDependencies: @@ -4818,23 +4771,23 @@ snapshots: '@vue/server-renderer': 3.4.38(vue@3.4.38) '@vue/shared': 3.4.38 - vuepress-plugin-components@2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): + vuepress-plugin-components@2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): dependencies: '@stackblitz/sdk': 1.11.0 - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) balloon-css: 1.2.0 create-codepen: 2.0.0 qrcode: 1.5.4 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - vuepress-shared: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress-shared: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) transitivePeerDependencies: - '@vue/composition-api' - typescript - vuepress-plugin-md-enhance@2.0.0-rc.52(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): + vuepress-plugin-md-enhance@2.0.0-rc.49(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): dependencies: '@mdit/plugin-alert': 0.12.0(markdown-it@14.1.0) '@mdit/plugin-align': 0.12.0(markdown-it@14.1.0) @@ -4860,14 +4813,14 @@ snapshots: '@mdit/plugin-tex': 0.12.0(markdown-it@14.1.0) '@mdit/plugin-uml': 0.12.0(markdown-it@14.1.0) '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) balloon-css: 1.2.0 js-yaml: 4.1.0 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - vuepress-shared: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress-shared: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) optionalDependencies: katex: 0.16.11 mathjax-full: 3.2.2 @@ -4877,9 +4830,9 @@ snapshots: - markdown-it - typescript - vuepress-shared@2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): + vuepress-shared@2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) cheerio: 1.0.0-rc.12 dayjs: 1.11.12 @@ -4888,34 +4841,34 @@ snapshots: gray-matter: 4.0.3 semver: 7.6.3 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) transitivePeerDependencies: - '@vue/composition-api' - typescript - vuepress-theme-hope@2.0.0-rc.52(@vuepress/plugin-docsearch@2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-prismjs@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): - dependencies: - '@vuepress/helper': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-active-header-links': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-back-to-top': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-blog': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-catalog': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-comment': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-copy-code': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-copyright': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-git': 2.0.0-rc.38(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-links-check': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-notice': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-nprogress': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-photo-swipe': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-reading-time': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-rtl': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sass-palette': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-seo': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-shiki': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-sitemap': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-theme-data': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-watermark': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress-theme-hope@2.0.0-rc.49(@vuepress/plugin-docsearch@2.0.0-rc.36(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(@vuepress/plugin-redirect@2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)))(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)): + dependencies: + '@vuepress/helper': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-active-header-links': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-back-to-top': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-blog': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-catalog': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-comment': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-copy-code': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-copyright': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-git': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-links-check': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-notice': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-nprogress': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-photo-swipe': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-reading-time': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-rtl': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sass-palette': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-seo': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-shiki': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-sitemap': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-theme-data': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-watermark': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) '@vueuse/core': 10.11.1(vue@3.4.38) balloon-css: 1.2.0 bcrypt-ts: 5.0.2 @@ -4923,14 +4876,13 @@ snapshots: chokidar: 3.6.0 gray-matter: 4.0.3 vue: 3.4.38 - vuepress: 2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) - vuepress-plugin-components: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - vuepress-plugin-md-enhance: 2.0.0-rc.52(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - vuepress-shared: 2.0.0-rc.52(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress: 2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38) + vuepress-plugin-components: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress-plugin-md-enhance: 2.0.0-rc.49(katex@0.16.11)(markdown-it@14.1.0)(mathjax-full@3.2.2)(mermaid@10.9.1)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + vuepress-shared: 2.0.0-rc.49(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) optionalDependencies: - '@vuepress/plugin-docsearch': 2.0.0-rc.39(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-prismjs': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) - '@vuepress/plugin-redirect': 2.0.0-rc.39(vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-docsearch': 2.0.0-rc.36(@algolia/client-search@4.24.0)(search-insights@2.16.3)(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) + '@vuepress/plugin-redirect': 2.0.0-rc.36(vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38)) transitivePeerDependencies: - '@types/reveal.js' - '@vue/composition-api' @@ -4958,17 +4910,17 @@ snapshots: - typescript - vidstack - vuepress@2.0.0-rc.14(@vuepress/bundler-vite@2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38): + vuepress@2.0.0-rc.13(@vuepress/bundler-vite@2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8))(vue@3.4.38): dependencies: - '@vuepress/cli': 2.0.0-rc.14 - '@vuepress/client': 2.0.0-rc.14 - '@vuepress/core': 2.0.0-rc.14 - '@vuepress/markdown': 2.0.0-rc.14 - '@vuepress/shared': 2.0.0-rc.14 - '@vuepress/utils': 2.0.0-rc.14 + '@vuepress/cli': 2.0.0-rc.13 + '@vuepress/client': 2.0.0-rc.13 + '@vuepress/core': 2.0.0-rc.13 + '@vuepress/markdown': 2.0.0-rc.13 + '@vuepress/shared': 2.0.0-rc.13 + '@vuepress/utils': 2.0.0-rc.13 vue: 3.4.38 optionalDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.14(@types/node@22.3.0)(sass@1.77.8) + '@vuepress/bundler-vite': 2.0.0-rc.13(@types/node@22.3.0)(sass@1.77.8) transitivePeerDependencies: - supports-color - typescript @@ -5015,6 +4967,8 @@ snapshots: yaml@2.3.1: {} + yaml@2.5.0: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts index 8e73b920..3a18b468 100644 --- a/src/.vuepress/theme.ts +++ b/src/.vuepress/theme.ts @@ -72,8 +72,13 @@ export default hopeTheme({ facetFilters: [`version:${versionKey}`, `product:${siteBase}`], }, }, - shiki: false, - prismjs: true, + shiki: { + themes: { + light: "light-plus", + dark: "dark-plus", + }, + lineNumbers: 3 + }, redirect: true, mdEnhance: { align: true, From 7918f3182fa12088e7a440cd836acf286309c8e4 Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 16 Aug 2024 15:26:29 -0400 Subject: [PATCH 04/54] and nested link --- src/.vuepress/sidebar/en.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/.vuepress/sidebar/en.ts b/src/.vuepress/sidebar/en.ts index beeab8be..b053dc11 100644 --- a/src/.vuepress/sidebar/en.ts +++ b/src/.vuepress/sidebar/en.ts @@ -180,8 +180,12 @@ export const enSidebar = sidebar({ }, { text: "Amazon MSK", - link: "https://github.com/aklivity/zilla-plus-aws-templates/tree/main/amazon-msk/cdktf/web-streaming", - children: [], + children: [ + { + text: "Terraform", + link: "https://github.com/aklivity/zilla-plus-aws-templates/tree/main/amazon-msk/cdktf/web-streaming", + }, + ], }, ], }, @@ -356,6 +360,12 @@ export const enSidebar = sidebar({ link: "solutions/concepts/kafka-proxies/iot-ingest-control.md", children: [], }, + { + text: "Web Streaming on AWS", + icon: "aky-zilla-plus", + link: "solutions/concepts/kafka-proxies/web-streaming.md", + children: [], + }, ], }, { From 75c273b3db3f911fbfb12df3211ad53e6eac8ab1 Mon Sep 17 00:00:00 2001 From: AJ Date: Thu, 1 Aug 2024 07:28:25 -0700 Subject: [PATCH 05/54] update schema --- .check-schema/zilla-schema.json | 7069 +++++++++++++++++++------------ 1 file changed, 4345 insertions(+), 2724 deletions(-) diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index a32d3990..4989ae92 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -5,7 +5,6 @@ "properties": { "name": { "title": "Name", - "type": "string", "anyOf": [ { "type": "string", @@ -44,7 +43,6 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "string", "anyOf": [ { "type": "string" @@ -107,17 +105,16 @@ "properties": { "type": { "title": "Type", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "filesystem" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "filesystem" ] }, "options": { @@ -150,7 +147,6 @@ "type": "object", "properties": { "store": { - "type": "string", "anyOf": [ { "type": "string" @@ -161,19 +157,17 @@ ] }, "type": { - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "pkcs12" }, { "$ref": "#/$defs/expression" } - ], - "default": "pkcs12" + ] }, "password": { - "type": "string", "anyOf": [ { "type": "string" @@ -191,7 +185,6 @@ "type": "object", "properties": { "store": { - "type": "string", "anyOf": [ { "type": "string" @@ -202,19 +195,17 @@ ] }, "type": { - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "pkcs12" }, { "$ref": "#/$defs/expression" } - ], - "default": "pkcs12" + ] }, "password": { - "type": "string", "anyOf": [ { "type": "string" @@ -232,7 +223,6 @@ "type": "object", "properties": { "store": { - "type": "string", "anyOf": [ { "type": "string" @@ -243,19 +233,17 @@ ] }, "type": { - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "pkcs12" }, { "$ref": "#/$defs/expression" } - ], - "default": "pkcs12" + ] }, "password": { - "type": "string", "anyOf": [ { "type": "string" @@ -281,17 +269,16 @@ "properties": { "type": { "title": "Type", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "jwt" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "jwt" ] }, "options": { @@ -321,7 +308,6 @@ "properties": { "issuer": { "title": "Issuer", - "type": "string", "anyOf": [ { "type": "string" @@ -333,7 +319,6 @@ }, "audience": { "title": "Audience", - "type": "string", "anyOf": [ { "type": "string" @@ -347,17 +332,16 @@ "title": "Keys", "oneOf": [ { - "type": "string", "anyOf": [ { "type": "string", + "format": "uri", "pattern": "^(https?)://" }, { "$ref": "#/$defs/expression" } - ], - "format": "uri" + ] }, { "type": "array", @@ -367,7 +351,6 @@ "properties": { "kty": { "title": "Key Type", - "type": "string", "anyOf": [ { "type": "string" @@ -379,7 +362,6 @@ }, "kid": { "title": "Key ID", - "type": "string", "anyOf": [ { "type": "string" @@ -401,7 +383,6 @@ }, "challenge": { "title": "Challenge", - "type": "number", "anyOf": [ { "type": "number" @@ -457,17 +438,18 @@ "properties": { "type": { "title": "Type", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "otlp", + "prometheus", + "stdout" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "prometheus" ] } }, @@ -475,6 +457,104 @@ "type" ], "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "otlp" + } + } + }, + "then": { + "properties": { + "type": { + "const": "otlp" + }, + "options": { + "properties": { + "interval": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "signals": { + "type": "array", + "items": { + "enum": [ + "metrics", + "logs", + "traces" + ] + } + }, + "endpoint": { + "type": "object", + "properties": { + "protocol": { + "enum": [ + "http" + ], + "default": "http" + }, + "location": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "overrides": { + "type": "object", + "properties": { + "metrics": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "logs": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + }, + "required": [ + "endpoint" + ], + "additionalProperties": false + }, + "additionalProperties": false + }, + "required": [ + "options" + ] + } + }, { "if": { "properties": { @@ -496,13 +576,20 @@ "properties": { "scheme": { "title": "Scheme", - "enum": [ - "http" + "anyOf": [ + { + "type": "string", + "enum": [ + "http" + ] + }, + { + "$ref": "#/$defs/expression" + } ] }, "port": { "title": "Port", - "type": "integer", "anyOf": [ { "type": "integer" @@ -514,7 +601,6 @@ }, "path": { "title": "Path", - "type": "string", "anyOf": [ { "type": "string" @@ -538,6 +624,22 @@ } } } + }, + { + "if": { + "properties": { + "type": { + "const": "stdout" + } + } + }, + "then": { + "properties": { + "type": { + "const": "stdout" + } + } + } } ] } @@ -547,16 +649,19 @@ "properties": { "type": { "title": "Type", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "apicurio", + "filesystem", + "inline", + "karapace" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ ] }, "options": { @@ -569,55 +674,297 @@ "type" ], "allOf": [ - ] - }, - "cataloged": { - "oneOf": [ { - "type": "object", - "properties": { - "id": { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "if": { + "properties": { + "type": { + "const": "apicurio" + } } }, - "required": [ - "id" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "schema": { - "type": "string", - "anyOf": [ - { - "type": "string" + "then": { + "properties": { + "type": { + "const": "apicurio" + }, + "options": { + "properties": { + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "group-id": { + "anyOf": [ + { + "type": "string", + "default": "default" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "use-id": { + "anyOf": [ + { + "type": "string", + "enum": [ + "globalId", + "contentId" + ], + "default": "globalId" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "id-encoding": { + "anyOf": [ + { + "type": "string", + "enum": [ + "default", + "legacy" + ], + "default": "default" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "max-age": { + "title": "Max Age", + "anyOf": [ + { + "type": "number", + "default": 300 + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - { - "$ref": "#/$defs/expression" - } - ] + "additionalProperties": false + } }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "const": "filesystem" + } + } + }, + "then": { + "properties": { + "type": { + "const": "filesystem" + }, + "options": { + "properties": { + "subjects": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Subject", + "type": "object", + "properties": { + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "path" + ], + "additionalProperties": false + } + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "const": "inline" + } + } + }, + "then": { + "properties": { + "type": { + "const": "inline" + }, + "options": { + "properties": { + "subjects": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Subject", + "type": "object", + "properties": { + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + } + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "const": "karapace" + } + } + }, + "then": { + "properties": { + "type": { + "const": "karapace" + }, + "options": { + "properties": { + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "context": { + "anyOf": [ + { + "type": "string", + "default": "default" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "max-age": { + "title": "Max Age", + "anyOf": [ + { + "type": "number", + "default": 300 + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + ] + }, + "cataloged": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" } - ], - "default": "latest" + ] + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] } }, "required": [ @@ -629,7 +976,6 @@ "type": "object", "properties": { "strategy": { - "type": "string", "anyOf": [ { "type": "string" @@ -640,16 +986,15 @@ ] }, "version": { - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "latest" }, { "$ref": "#/$defs/expression" } - ], - "default": "latest" + ] } }, "required": [ @@ -661,7 +1006,6 @@ "type": "object", "properties": { "subject": { - "type": "string", "anyOf": [ { "type": "string" @@ -672,16 +1016,15 @@ ] }, "version": { - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "latest" }, { "$ref": "#/$defs/expression" } - ], - "default": "latest" + ] } }, "required": [ @@ -691,285 +1034,128 @@ } ] }, - "binding": { - "title": "Binding", - "type": "object", - "properties": { - "vault": { - "title": "Vault", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "catalog": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "$ref": "#/$defs/cataloged" - } - } - }, - "maxProperties": 1 - }, - "type": { - "title": "Type", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "echo", - "fan", - "filesystem", - "grpc", - "grpc-kafka", - "http", - "http-filesystem", - "http-kafka", - "kafka", - "kafka-grpc", - "mqtt", - "mqtt-kafka", - "proxy", - "sse", - "sse-kafka", - "tcp", - "tls", - "ws" - ] - }, - "kind": { - "title": "Kind", - "enum": [ - "client", - "server", - "proxy", - "remote_server", - "cache_client", - "cache_server" - ] - }, - "options": { - "title": "Options", - "type": "object" - }, - "routes": { - "title": "Routes", - "type": "array", - "items": { - "title": "Route", + "options": { + "binding": { + "http": { + "authorization": { + "title": "Authorizations", "type": "object", - "properties": { - "exit": { - "title": "Exit", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "when": { - "title": "Conditions", - "type": "array", - "items": { - "title": "Condition", - "type": "object" - } - }, - "with": { - "title": "Override", - "type": "object" - }, - "guarded": { - "title": "Guarded", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Authorization", "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Roles", - "type": "array", - "items": { - "title": "Role", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "properties": { + "credentials": { + "title": "Credentials", + "type": "object", + "properties": { + "cookies": { + "title": "Cookies", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "pattern": ".*\\{credentials\\}.*" + }, + { + "$ref": "#/$defs/expression" + } + ] } - ] - } + }, + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "pattern": ".*\\{credentials\\}.*" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "query": { + "title": "Query Parameters", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "pattern": ".*\\{credentials\\}.*" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "cookies" + ] + }, + { + "required": [ + "headers" + ] + }, + { + "required": [ + "query" + ] + } + ] } - } + }, + "additionalProperties": false, + "required": [ + "credentials" + ] } }, - "additionalProperties": false - } - }, - "telemetry": { - "title": "Telemetry", - "type": "object", - "properties": { - "metrics": { - "type": "array" - } + "maxProperties": 1 } }, - "exit": { - "title": "Exit", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "additionalProperties": false - }, - "required": [ - "type", - "kind" - ], - "anyOf": [ - { - "properties": { - "kind": { - "const": "remote_server" - }, - "entry": { - "title": "Exit", - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "entry" - ] - }, - { - "properties": { - "kind": { - "not": { - "const": "remote_server" - } - } - } - } - ], - "allOf": [ - { - "if": { - "properties": { - "type": { - "const": "echo" - } - } - }, - "then": { + "kafka": { + "sasl": { + "title": "SASL", + "type": "object", "properties": { - "type": { - "const": "echo" - }, - "kind": { - "enum": [ - "server" + "mechanism": { + "title": "Mechanism", + "anyOf": [ + { + "type": "string", + "enum": [ + "plain", + "scram-sha-1", + "scram-sha-256", + "scram-sha-512" + ] + }, + { + "$ref": "#/$defs/expression" + } ] - }, - "vault": false, - "options": false, - "routes": false, - "exit": false - } - } - }, - { - "if": { - "properties": { - "type": { - "const": "fan" } - } - }, - "then": { - "properties": { - "type": { - "const": "fan" - }, - "kind": { - "enum": [ - "server" - ] - }, - "vault": false, - "options": false, - "routes": false }, - "anyOf": [ - { - "required": [ - "exit" - ] - }, + "oneOf": [ { - "required": [ - "routes" - ] - } - ] - } - }, - { - "if": { - "properties": { - "type": { - "const": "filesystem" - } - } - }, - "then": { - "properties": { - "type": { - "const": "filesystem" - }, - "kind": { - "enum": [ - "server" - ] - }, - "vault": false, - "options": { + "additionalProperties": false, "properties": { - "location": { - "title": "Location", - "type": "string", + "mechanism": { + "const": "plain" + }, + "username": { + "title": "Username", "anyOf": [ { "type": "string" @@ -979,9 +1165,8 @@ } ] }, - "symlinks": { - "title": "Symbolic Links", - "type": "string", + "password": { + "title": "Password", "anyOf": [ { "type": "string" @@ -989,250 +1174,212 @@ { "$ref": "#/$defs/expression" } - ], - "enum": [ - "follow", - "ignore" - ], - "default": "ignore" + ] } }, - "additionalProperties": false - }, - "routes": false, - "exit": false - } - } - }, - { - "if": { - "properties": { - "type": { - "const": "grpc" - } - } - }, - "then": { - "properties": { - "type": { - "const": "grpc" - }, - "kind": { - "enum": [ - "server", - "client" + "required": [ + "username", + "password" ] }, - "vault": false, - "options": { + { + "additionalProperties": false, "properties": { - "services": { - "title": "Services", - "type": "array", - "items": { - "title": "Service", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } + "mechanism": { + "const": "scram-sha-1" + }, + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] } }, - "additionalProperties": false + "required": [ + "username", + "password" + ] }, - "routes": { - "items": { - "properties": { - "when": { - "items": { - "properties": { - "method": { - "title": "Method", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "metadata": { - "title": "Metadata", - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "type": "object", - "properties": { - "base64": { - "title": "Base64 value", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - } - ] - } - } - }, - "additionalProperties": false + { + "additionalProperties": false, + "properties": { + "mechanism": { + "const": "scram-sha-256" + }, + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" } - }, - "with": false + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] } - } - } - }, - "anyOf": [ - { + }, "required": [ - "exit" + "username", + "password" ] }, { + "additionalProperties": false, + "properties": { + "mechanism": { + "const": "scram-sha-512" + }, + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, "required": [ - "routes" + "username", + "password" ] } ] - } - }, - { - "if": { - "properties": { - "type": { - "const": "grpc-kafka" - } - } }, - "then": { - "properties": { - "type": { - "const": "grpc-kafka" - }, - "kind": { - "enum": [ - "proxy" - ] - }, - "vault": false, - "options": { + "cache_server_topics": { + "topics": { + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, "properties": { - "reliability": { - "title": "Reliability", - "type": "object", - "properties": { - "field": { - "title": "Grpc Last Message Id", - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ], - "minimum": 1, - "maximum": 536870911, - "default": 32767 + "name": { + "anyOf": [ + { + "type": "string" }, - "metadata": { - "title": "Grpc Last Message Id Metadata Name", + { + "$ref": "#/$defs/expression" + } + ] + }, + "defaultOffset": { + "anyOf": [ + { + "type": "string", + "enum": [ + "live", + "historical" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "deltaType": { + "anyOf": [ + { "type": "string", + "enum": [ + "none", + "json_patch" + ], + "deprecated": true + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "anyOf": [ { - "type": "string" + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" }, { "$ref": "#/$defs/expression" } - ], - "default": "last-message-id" + ] } - } + }, + "additionalProperties": false }, - "idempotency": { - "title": "Idempotency", - "type": "object", - "properties": { - "metadata": { - "title": "Idempotency Metadata name", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "idempotency-key" - } - } + "key": { + "$ref": "#/$defs/converter" }, - "correlation": { - "title": "Correlation", + "value": { + "$ref": "#/$defs/converter" + } + } + } + } + } + }, + "mqtt": { + "authorization": { + "title": "Authorizations", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Guard", + "type": "object", + "properties": { + "credentials": { + "title": "Credentials", "type": "object", "properties": { - "headers": { - "title": "Correlation Kafka Headers", + "connect": { + "title": "Connect", "type": "object", "properties": { - "service": { - "title": "Grpc Service Kafka Header", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "zilla:service" - }, - "method": { - "title": "Grpc Method Kafka Header", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "zilla:method" - }, - "correlation-id": { - "title": "Correlation-Id Kafka Header", - "type": "string", + "username": { + "title": "Username", "anyOf": [ { "type": "string" @@ -1240,12 +1387,10 @@ { "$ref": "#/$defs/expression" } - ], - "default": "zilla:correlation-id" + ] }, - "reply-to": { - "title": "Reply to Topic", - "type": "string", + "password": { + "title": "Password", "anyOf": [ { "type": "string" @@ -1253,166 +1398,1273 @@ { "$ref": "#/$defs/expression" } - ], - "default": "zilla:reply-to" + ] } }, - "additionalProperties": false + "oneOf": [ + { + "required": [ + "username" + ] + }, + { + "required": [ + "password" + ] + } + ] } }, - "required": [ - "headers" - ], - "additionalProperties": false + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "connect" + ] + } + ] } }, - "additionalProperties": false - }, - "routes": { - "items": { - "properties": { - "when": { - "items": { - "properties": { - "method": { - "title": "Method", - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": "^(?[^/]+)/(?[^/]+)" - }, - { - "$ref": "#/$defs/expression" - } - ] + "additionalProperties": false, + "required": [ + "credentials" + ] + } + }, + "maxProperties": 1 + } + }, + "tcp": { + "properties": { + "host": { + "title": "Host", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "title": "Port", + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" }, - "metadata": { - "title": "Metadata", - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "type": "object", - "properties": { - "base64": { - "title": "Base64 value", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - } - ] - } + { + "$ref": "#/$defs/expression" } - }, - "additionalProperties": false + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] } - }, - "with": { - "oneOf": [ - { - "properties": { - "capability": { - "title": "Capability", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "const": "fetch" - }, - "topic": { - "title": "Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "filters": { - "title": "Filters", - "type": "array", - "items": { - "properties": { - "key": { - "title": "Key", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "headers": { - "title": "Headers", - "type": "object", - "additionalProperties": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - { - "properties": { - "capability": { - "title": "Capability", - "type": "string", - "anyOf": [ + ] + } + } + ] + } + }, + "additionalProperties": false + }, + "tls": { + "properties": { + "version": { + "title": "Version", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "keys": { + "title": "Vault Keys", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "trust": { + "title": "Vault Certificates", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "trustcacerts": { + "title": "Trust CA Certificates", + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "sni": { + "title": "Server Names", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "alpn": { + "title": "Application Protocols", + "type": "array", + "items": { + "type": [ + "string", + "null" + ] + } + }, + "mutual": { + "title": "Mutual Authentication", + "anyOf": [ + { + "type": "string", + "enum": [ + "required", + "requested", + "none" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "signers": { + "title": "Vault Signer Certificates", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + } + }, + "binding": { + "title": "Binding", + "type": "object", + "properties": { + "vault": { + "title": "Vault", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "$ref": "#/$defs/cataloged" + } + } + }, + "maxProperties": 1 + }, + "type": { + "title": "Type", + "anyOf": [ + { + "type": "string", + "enum": [ + "asyncapi", + "echo", + "fan", + "filesystem", + "grpc", + "grpc-kafka", + "http", + "http-filesystem", + "http-kafka", + "kafka", + "kafka-grpc", + "mqtt", + "mqtt-kafka", + "openapi", + "openapi-asyncapi", + "proxy", + "sse", + "sse-kafka", + "tcp", + "tls", + "ws" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "kind": { + "title": "Kind", + "enum": [ + "client", + "server", + "proxy", + "remote_server", + "cache_client", + "cache_server" + ] + }, + "options": { + "title": "Options", + "type": "object" + }, + "routes": { + "title": "Routes", + "type": "array", + "items": { + "title": "Route", + "type": "object", + "properties": { + "exit": { + "title": "Exit", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "when": { + "title": "Conditions", + "type": "array", + "items": { + "title": "Condition", + "type": "object" + } + }, + "with": { + "title": "Override", + "type": "object" + }, + "guarded": { + "title": "Guarded", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Roles", + "type": "array", + "items": { + "title": "Role", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + } + }, + "additionalProperties": false + } + }, + "telemetry": { + "title": "Telemetry", + "type": "object", + "properties": { + "metrics": { + "type": "array" + } + } + }, + "exit": { + "title": "Exit", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "entry": { + "title": "Entry", + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "type", + "kind" + ], + "anyOf": [ + { + "properties": { + "kind": { + "const": "remote_server" + } + }, + "required": [ + "entry" + ] + }, + { + "properties": { + "kind": { + "not": { + "const": "remote_server" + } + }, + "entry": false + } + } + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "asyncapi" + } + } + }, + "then": { + "properties": { + "type": { + "const": "asyncapi" + }, + "kind": { + "enum": [ + "server", + "client", + "proxy" + ] + }, + "options": { + "properties": { + "specs": { + "title": "Specifications", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "servers": { + "title": "Servers", + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "title": "URL", + "anyOf": [ + { + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "host": { + "title": "Host", + "anyOf": [ + { + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "pathname": { + "title": "Path Name", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "tcp": { + "$ref": "#/$defs/options/binding/tcp" + }, + "tls": { + "$ref": "#/$defs/options/binding/tls" + }, + "http": { + "title": "Http", + "type": "object", + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/http/authorization" + } + }, + "additionalProperties": false + }, + "mqtt": { + "title": "MQTT", + "type": "object", + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/mqtt/authorization" + } + }, + "additionalProperties": false + }, + "kafka": { + "title": "Kafka", + "type": "object", + "properties": { + "sasl": { + "$ref": "#/$defs/options/binding/kafka/sasl" + }, + "topics": { + "$ref": "#/$defs/options/binding/kafka/cache_server_topics" + } + }, + "additionalProperties": false + }, + "mqtt-kafka": { + "title": "MQTT-Kafka", + "type": "object", + "properties": { + "channels": { + "title": "Channels", + "type": "object", + "properties": { + "sessions": { + "title": "Kafka Sessions Channel", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "messages": { + "title": "Kafka Messages Channel", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "retained": { + "title": "Kafka Retained Channel", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "additionalProperties": false + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "additionalProperties": false, + "properties": { + "api-id": { + "title": "Spec API Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "operation-id": { + "title": "MQTT Operation Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "with": { + "properties": { + "api-id": { + "title": "Spec API Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "operation-id": { + "title": "MQTT Operation Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + } + } + }, + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] + } + }, + "required": [ + "routes" + ] + } + ] + }, + { + "properties": { + "kind": { + "const": "proxy" + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] + } + }, + "required": [ + "routes" + ] + } + ] + }, + { + "properties": { + "kind": { + "const": "client" + }, + "routes": { + "items": { + "properties": { + "exit": false + } + } + }, + "exit": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "echo" + } + } + }, + "then": { + "properties": { + "type": { + "const": "echo" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": false, + "routes": false, + "exit": false + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "fan" + } + } + }, + "then": { + "properties": { + "type": { + "const": "fan" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": false, + "routes": false + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "filesystem" + } + } + }, + "then": { + "properties": { + "type": { + "const": "filesystem" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": { + "properties": { + "location": { + "title": "Location", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "symlinks": { + "title": "Symbolic Links", + "anyOf": [ + { + "type": "string", + "enum": [ + "follow", + "ignore" + ], + "default": "ignore" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + }, + "routes": false, + "exit": false + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "grpc" + } + } + }, + "then": { + "properties": { + "type": { + "const": "grpc" + }, + "kind": { + "enum": [ + "server", + "client" + ] + }, + "vault": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "method": { + "title": "Method", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "metadata": { + "title": "Metadata", + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "type": "object", + "properties": { + "base64": { + "title": "Base64 value", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + ] + } + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + }, + "options": { + "properties": { + "services": { + "title": "Services", + "type": "array", + "items": { + "title": "Service", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "deprecated": true + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "grpc-kafka" + } + } + }, + "then": { + "properties": { + "type": { + "const": "grpc-kafka" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": { + "properties": { + "reliability": { + "title": "Reliability", + "type": "object", + "properties": { + "field": { + "title": "Grpc Last Message Id", + "anyOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 536870911, + "default": 32767 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "metadata": { + "title": "Grpc Last Message Id Metadata Name", + "anyOf": [ + { + "type": "string", + "default": "last-message-id" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "idempotency": { + "title": "Idempotency", + "type": "object", + "properties": { + "metadata": { + "title": "Idempotency Metadata name", + "anyOf": [ + { + "type": "string", + "default": "idempotency-key" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "correlation": { + "title": "Correlation", + "type": "object", + "properties": { + "headers": { + "title": "Correlation Kafka Headers", + "type": "object", + "properties": { + "service": { + "title": "Grpc Service Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:service" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "method": { + "title": "Grpc Method Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:method" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "correlation-id": { + "title": "Correlation-Id Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:correlation-id" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "reply-to": { + "title": "Reply to Topic", + "anyOf": [ + { + "type": "string", + "default": "zilla:reply-to" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "required": [ + "headers" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "method": { + "title": "Method", + "anyOf": [ + { + "type": "string", + "pattern": "^(?[^/]+)/(?[^/]+)" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "metadata": { + "title": "Metadata", + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "type": "object", + "properties": { + "base64": { + "title": "Base64 value", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + ] + } + } + }, + "additionalProperties": false + } + }, + "with": { + "oneOf": [ + { + "properties": { + "capability": { + "title": "Capability", + "anyOf": [ + { + "type": "string", + "const": "fetch" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "topic": { + "title": "Topic", + "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/expression" } - ], - "const": "produce" + ] + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "properties": { + "key": { + "title": "Key", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + { + "properties": { + "capability": { + "title": "Capability", + "anyOf": [ + { + "type": "string", + "const": "produce" + }, + { + "$ref": "#/$defs/expression" + } + ] }, "topic": { "title": "Topic", - "type": "string", "anyOf": [ { "type": "string" @@ -1424,24 +2676,22 @@ }, "acks": { "title": "Acks", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "none", - "leader_only", - "in_sync_replicas" ] }, "key": { "title": "Key", - "type": "string", "anyOf": [ { "type": "string" @@ -1455,7 +2705,6 @@ "title": "Headers", "type": "object", "additionalProperties": { - "type": "string", "anyOf": [ { "type": "string" @@ -1468,7 +2717,6 @@ }, "reply-to": { "title": "Reply-To topic", - "type": "string", "anyOf": [ { "type": "string" @@ -1534,18 +2782,17 @@ ], "items": { "title": "Version", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "http/1.1", + "h2" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "http/1.1", - "h2" ] } }, @@ -1555,7 +2802,6 @@ "properties": { "policy": { "title": "Policy", - "type": "string", "anyOf": [ { "type": "string" @@ -1587,7 +2833,6 @@ "title": "Origins", "type": "array", "items": { - "type": "string", "anyOf": [ { "type": "string" @@ -1602,7 +2847,6 @@ "title": "Methods", "type": "array", "items": { - "type": "string", "anyOf": [ { "type": "string" @@ -1617,7 +2861,6 @@ "title": "Headers", "type": "array", "items": { - "type": "string", "anyOf": [ { "type": "string" @@ -1630,7 +2873,6 @@ }, "credentials": { "title": "Credentials", - "type": "boolean", "anyOf": [ { "type": "boolean" @@ -1645,7 +2887,6 @@ }, "max-age": { "title": "Max Age", - "type": "number", "anyOf": [ { "type": "number" @@ -1663,119 +2904,31 @@ "title": "Headers", "type": "array", "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - ] - }, - "authorization": { - "title": "Authorizations", - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Authorization", - "type": "object", - "properties": { - "credentials": { - "title": "Credentials", - "type": "object", - "properties": { - "cookies": { - "title": "Cookies", - "type": "object", - "additionalProperties": { - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": ".*\\{credentials\\}.*" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "headers": { - "title": "Headers", - "type": "object", - "additionalProperties": { - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": ".*\\{credentials\\}.*" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "query": { - "title": "Query Parameters", - "type": "object", - "additionalProperties": { - "type": "string", "anyOf": [ - { - "type": "string", - "pattern": ".*\\{credentials\\}.*" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - }, - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "cookies" - ] - }, - { - "required": [ - "headers" - ] - }, - { - "required": [ - "query" - ] + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } } - ] + }, + "additionalProperties": false } }, - "additionalProperties": false, - "required": [ - "credentials" - ] + "additionalProperties": false } - }, - "maxProperties": 1 + ] + }, + "authorization": { + "$ref": "#/$defs/options/binding/http/authorization" }, "overrides": { "title": "Overrides", "type": "object", "additionalProperties": { - "type": "string", "anyOf": [ { "type": "string" @@ -1792,7 +2945,6 @@ "type": "object", "properties": { "path": { - "type": "string", "anyOf": [ { "type": "string" @@ -1803,30 +2955,28 @@ ] }, "method": { - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "GET", + "PUT", + "POST", + "DELETE", + "OPTIONS", + "HEAD", + "PATCH", + "TRACE" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "GET", - "PUT", - "POST", - "DELETE", - "OPTIONS", - "HEAD", - "PATCH", - "TRACE" ] }, "content-type": { "type": "array", "items": { - "type": "string", "anyOf": [ { "type": "string" @@ -1878,7 +3028,6 @@ "status": { "oneOf": [ { - "type": "integer", "anyOf": [ { "type": "integer" @@ -1891,7 +3040,6 @@ { "type": "array", "items": { - "type": "integer", "anyOf": [ { "type": "integer" @@ -1907,7 +3055,6 @@ "content-type": { "type": "array", "items": { - "type": "string", "anyOf": [ { "type": "string" @@ -1988,7 +3135,6 @@ "title": "Headers", "type": "object", "additionalProperties": { - "type": "string", "anyOf": [ { "type": "string" @@ -2019,6 +3165,28 @@ "routes" ] } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "properties": { + "access-control": false, + "authorization": false + } + } + } + } ] } }, @@ -2050,7 +3218,6 @@ "properties": { "path": { "title": "Path", - "type": "string", "anyOf": [ { "type": "string" @@ -2068,7 +3235,6 @@ "properties": { "path": { "title": "Topic", - "type": "string", "anyOf": [ { "type": "string" @@ -2129,16 +3295,15 @@ "properties": { "header": { "title": "Idempotency Key HTTP Header", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "idempotency-key" }, { "$ref": "#/$defs/expression" } - ], - "default": "idempotency-key" + ] } }, "required": [ @@ -2156,29 +3321,27 @@ "properties": { "reply-to": { "title": "Reply-To Kafka Header", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "zilla:reply-to" }, { "$ref": "#/$defs/expression" } - ], - "default": "zilla:reply-to" + ] }, "correlation-id": { "title": "Correlation-Id Kafka Header", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "default": "zilla:correlation-id" }, { "$ref": "#/$defs/expression" } - ], - "default": "zilla:correlation-id" + ] } }, "additionalProperties": false @@ -2200,7 +3363,6 @@ "properties": { "method": { "title": "Method", - "type": "string", "anyOf": [ { "type": "string" @@ -2212,7 +3374,6 @@ }, "path": { "title": "Path", - "type": "string", "anyOf": [ { "type": "string" @@ -2232,20 +3393,18 @@ "properties": { "capability": { "title": "Capability", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "const": "fetch" }, { "$ref": "#/$defs/expression" } - ], - "const": "fetch" + ] }, "topic": { "title": "Topic", - "type": "string", "anyOf": [ { "type": "string" @@ -2262,7 +3421,6 @@ "properties": { "key": { "title": "Key", - "type": "string", "anyOf": [ { "type": "string" @@ -2276,7 +3434,6 @@ "title": "Headers", "type": "object", "additionalProperties": { - "type": "string", "anyOf": [ { "type": "string" @@ -2297,16 +3454,15 @@ "properties": { "content-type": { "title": "Content Type", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "const": "application/json" }, { "$ref": "#/$defs/expression" } - ], - "const": "application/json" + ] }, "patch": { "title": "Patch", @@ -2314,29 +3470,27 @@ "properties": { "initial": { "title": "Initial Value", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "const": "[]" }, { "$ref": "#/$defs/expression" } - ], - "const": "[]" + ] }, "path": { "title": "Path", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "const": "/-" }, { "$ref": "#/$defs/expression" } - ], - "const": "/-" + ] } }, "required": [ @@ -2358,20 +3512,18 @@ "properties": { "capability": { "title": "Capability", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "const": "produce" }, { "$ref": "#/$defs/expression" } - ], - "const": "produce" + ] }, "topic": { "title": "Topic", - "type": "string", "anyOf": [ { "type": "string" @@ -2383,24 +3535,22 @@ }, "acks": { "title": "Acks", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "none", - "leader_only", - "in_sync_replicas" ] }, "key": { "title": "Key", - "type": "string", "anyOf": [ { "type": "string" @@ -2414,7 +3564,6 @@ "title": "Headers", "type": "object", "additionalProperties": { - "type": "string", "anyOf": [ { "type": "string" @@ -2427,7 +3576,6 @@ }, "reply-to": { "title": "Reply-To", - "type": "string", "anyOf": [ { "type": "string" @@ -2441,7 +3589,6 @@ "title": "Async", "type": "object", "additionalProperties": { - "type": "string", "anyOf": [ { "type": "string" @@ -2471,11 +3618,183 @@ "with" ] } - }, - "exit": false - }, - "required": [ - "routes" + }, + "exit": false + }, + "required": [ + "routes" + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "kafka" + } + } + }, + "then": { + "properties": { + "type": { + "const": "kafka" + }, + "kind": { + "enum": [ + "cache_client", + "cache_server", + "client" + ] + }, + "vault": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "groupId": { + "title": "groupId", + "anyOf": [ + { + "type": "string", + "deprecated": true + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "cache_client" + }, + "options": { + "properties": { + "topics": { + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "key": { + "$ref": "#/$defs/converter" + }, + "value": { + "$ref": "#/$defs/converter" + } + } + } + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "cache_server" + }, + "options": { + "properties": { + "bootstrap": { + "title": "Bootstrap", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "topics": { + "$ref": "#/$defs/options/binding/kafka/cache_server_topics" + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "properties": { + "servers": { + "title": "Servers", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "pattern": "([^\\:]+):(\\d+)" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "sasl": { + "$ref": "#/$defs/options/binding/kafka/sasl" + } + }, + "additionalProperties": false + } + } + } ] } }, @@ -2483,214 +3802,107 @@ "if": { "properties": { "type": { - "const": "kafka" + "const": "kafka-grpc" } } }, "then": { "properties": { "type": { - "const": "kafka" + "const": "kafka-grpc" }, "kind": { "enum": [ - "cache_client", - "cache_server", - "client" + "remote_server" ] }, "vault": false, "options": { "properties": { - "merged": { - "title": "Merged", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "deprecated": true - }, - "bootstrap": { - "title": "Bootstrap", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "topics": { - "title": "Topics", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "defaultOffset": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "live", - "historical" - ] - }, - "deltaType": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "none", - "json_patch" - ], - "deprecated": true - }, - "key": { - "$ref": "#/$defs/converter" - }, - "value": { - "$ref": "#/$defs/converter" - } + "acks": { + "title": "Acks", + "anyOf": [ + { + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" + ] + }, + { + "$ref": "#/$defs/expression" } - } - }, - "servers": { - "title": "Servers", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": "([^\\:]+):(\\d+)" - }, - { - "$ref": "#/$defs/expression" - } - ] - } + ] }, - "sasl": { - "title": "SASL", + "idempotency": { + "title": "Idempotency", "type": "object", "properties": { - "mechanism": { - "title": "Mechanism", - "type": "string", + "metadata": { + "title": "Idempotency Metadata name", "anyOf": [ { - "type": "string" + "type": "string", + "default": "idempotency-key" }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "plain", - "scram-sha-1", - "scram-sha-256", - "scram-sha-512" ] } - }, - "oneOf": [ - { - "additionalProperties": false, + } + }, + "correlation": { + "title": "Correlation", + "type": "object", + "properties": { + "headers": { + "title": "Correlation Kafka Headers", + "type": "object", "properties": { - "mechanism": { - "const": "plain" - }, - "username": { - "title": "Username", - "type": "string", + "service": { + "title": "Grpc Service Kafka Header", "anyOf": [ { - "type": "string" + "type": "string", + "default": "zilla:service" }, { "$ref": "#/$defs/expression" } ] }, - "password": { - "title": "Password", - "type": "string", + "method": { + "title": "Grpc Method Kafka Header", "anyOf": [ { - "type": "string" + "type": "string", + "default": "zilla:method" }, { "$ref": "#/$defs/expression" } ] - } - }, - "required": [ - "username", - "password" - ] - }, - { - "additionalProperties": false, - "properties": { - "mechanism": { - "const": "scram-sha-1" }, - "username": { - "title": "Username", - "type": "string", + "correlation-id": { + "title": "Correlation-Id Kafka Header", "anyOf": [ { - "type": "string" + "type": "string", + "default": "zilla:correlation-id" }, { "$ref": "#/$defs/expression" } ] }, - "password": { - "title": "Password", - "type": "string", + "reply-to": { + "title": "Reply to Topic", "anyOf": [ { - "type": "string" + "type": "string", + "default": "zilla:reply-to" }, { "$ref": "#/$defs/expression" @@ -2698,20 +3910,21 @@ ] } }, - "required": [ - "username", - "password" - ] - }, - { - "additionalProperties": false, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { "properties": { - "mechanism": { - "const": "scram-sha-256" - }, - "username": { - "title": "Username", - "type": "string", + "topic": { + "title": "Topic", "anyOf": [ { "type": "string" @@ -2721,9 +3934,8 @@ } ] }, - "password": { - "title": "Password", - "type": "string", + "key": { + "title": "Key", "anyOf": [ { "type": "string" @@ -2732,22 +3944,23 @@ "$ref": "#/$defs/expression" } ] - } - }, - "required": [ - "username", - "password" - ] - }, - { - "additionalProperties": false, - "properties": { - "mechanism": { - "const": "scram-sha-512" }, - "username": { - "title": "Username", - "type": "string", + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "reply-to": { + "title": "ReplyTo", "anyOf": [ { "type": "string" @@ -2757,12 +3970,12 @@ } ] }, - "password": { - "title": "Password", - "type": "string", + "method": { + "title": "Method", "anyOf": [ { - "type": "string" + "type": "string", + "pattern": "^(?[^/]+)/(?[^/]+)" }, { "$ref": "#/$defs/expression" @@ -2770,49 +3983,136 @@ ] } }, + "additionalProperties": false, "required": [ - "username", - "password" + "topic", + "reply-to" ] } - ] - } - }, - "additionalProperties": false + }, + "with": { + "properties": { + "scheme": { + "title": "Scheme", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "scheme", + "authority" + ] + } + }, + "required": [ + "with" + ] + } + }, + "exit": false + }, + "required": [ + "routes" + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "mqtt" + } + } + }, + "then": { + "properties": { + "type": { + "const": "mqtt" + }, + "kind": { + "enum": [ + "server", + "client" + ] }, + "vault": false, "routes": { "items": { "properties": { "when": { "items": { + "additionalProperties": false, "properties": { - "topic": { - "title": "Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "session": { + "title": "Session", + "type": "array", + "items": { + "client-id": { + "title": "Client Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] } - ] + } }, - "groupId": { - "title": "groupId", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "subscribe": { + "title": "Subscribe", + "type": "array", + "items": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] } - ], - "deprecated": true + } + }, + "publish": { + "title": "Subscribe", + "type": "array", + "items": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } } - }, - "additionalProperties": false + } } }, "with": false @@ -2831,6 +4131,87 @@ "routes" ] } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + }, + "options": { + "properties": { + "versions": { + "title": "Versions", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "enum": [ + "v3.1.1", + "v5" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "authorization": { + "$ref": "#/$defs/options/binding/mqtt/authorization" + }, + "topics": { + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "content": { + "$ref": "#/$defs/validator" + }, + "user-properties": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/validator" + } + } + } + } + } + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/mqtt/authorization" + } + }, + "additionalProperties": false + } + } + } ] } }, @@ -2838,26 +4219,25 @@ "if": { "properties": { "type": { - "const": "kafka-grpc" + "const": "mqtt-kafka" } } }, "then": { "properties": { "type": { - "const": "kafka-grpc" + "const": "mqtt-kafka" }, "kind": { "enum": [ - "remote_server" + "proxy" ] }, "vault": false, "options": { "properties": { - "acks": { - "title": "Acks", - "type": "string", + "server": { + "title": "Server Reference", "anyOf": [ { "type": "string" @@ -2865,20 +4245,14 @@ { "$ref": "#/$defs/expression" } - ], - "enum": [ - "none", - "leader_only", - "in_sync_replicas" ] }, - "idempotency": { - "title": "Idempotency", + "topics": { + "title": "Topics", "type": "object", "properties": { - "metadata": { - "title": "Idempotency Metadata name", - "type": "string", + "sessions": { + "title": "Kafka Sessions Topic", "anyOf": [ { "type": "string" @@ -2886,174 +4260,148 @@ { "$ref": "#/$defs/expression" } - ], - "default": "idempotency-key" - } + ] + }, + "messages": { + "title": "Kafka Messages Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "retained": { + "title": "Kafka Retained Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "additionalProperties": false + }, + "required": [ + "sessions", + "retained", + "messages" + ], + "additionalProperties": false + }, + "clients": { + "title": "Clients", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] } }, - "correlation": { - "title": "Correlation", + "publish": { + "title": "Publish", "type": "object", "properties": { - "headers": { - "title": "Correlation Kafka Headers", - "type": "object", - "properties": { - "service": { - "title": "Grpc Service Kafka Header", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "zilla:service" - }, - "method": { - "title": "Grpc Method Kafka Header", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "zilla:method" - }, - "correlation-id": { - "title": "Correlation-Id Kafka Header", + "qosMax": { + "title": "Maximum QoS", + "anyOf": [ + { "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } + "enum": [ + "at_most_once", + "at_least_once", + "exactly_once" ], - "default": "zilla:correlation-id" + "default": "exactly_once" }, - "reply-to": { - "title": "Reply to Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "zilla:reply-to" + { + "$ref": "#/$defs/expression" } - }, - "additionalProperties": false - } + ] + }, + "additionalProperties": false }, + "required": [ + "qosMax" + ], "additionalProperties": false } - } + }, + "required": [ + "topics" + ], + "additionalProperties": false }, "routes": { "items": { "properties": { "when": { "items": { - "properties": { - "topic": { - "title": "Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "key": { - "title": "Key", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "headers": { - "title": "Headers", - "type": "object", - "additionalProperties": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "anyOf": [ + { + "properties": { + "subscribe": { + "title": "Subscribe", + "type": "array", + "items": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false } - ] - } - }, - "reply-to": { - "title": "ReplyTo", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" } - ] + } }, - "method": { - "title": "Method", - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": "^(?[^/]+)/(?[^/]+)" - }, - { - "$ref": "#/$defs/expression" + { + "properties": { + "publish": { + "title": "Publish", + "type": "array", + "items": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } } - ] + } } - }, - "additionalProperties": false, - "required": [ - "topic", - "reply-to" ] } }, "with": { "properties": { - "scheme": { - "title": "Scheme", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "authority": { - "title": "Authority", - "type": "string", + "messages": { + "title": "Messages Topic", "anyOf": [ { "type": "string" @@ -3064,22 +4412,29 @@ ] } }, - "additionalProperties": false, - "required": [ - "scheme", - "authority" - ] + "additionalProperties": false } }, "required": [ "with" ] } - }, - "exit": false + } }, "required": [ - "routes" + "options" + ], + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } ] } }, @@ -3087,62 +4442,75 @@ "if": { "properties": { "type": { - "const": "mqtt" + "const": "openapi" } } }, "then": { "properties": { "type": { - "const": "mqtt" + "const": "openapi" }, "kind": { "enum": [ - "server", - "client" + "client", + "server" ] }, - "vault": false, "options": { "properties": { - "versions": { - "title": "Versions", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "v3.1.1", - "v5" - ] - } + "tcp": { + "$ref": "#/$defs/options/binding/tcp" }, - "authorization": { - "title": "Authorizations", + "tls": { + "$ref": "#/$defs/options/binding/tls" + }, + "http": { + "title": "Http", + "type": "object", + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/http/authorization" + } + }, + "additionalProperties": false + }, + "specs": { + "title": "Specs", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Guard", "type": "object", "properties": { - "credentials": { - "title": "Credentials", + "servers": { + "title": "Servers", + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "title": "URL", + "anyOf": [ + { + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "catalog": { "type": "object", - "properties": { - "connect": { - "title": "Connect", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "object", "properties": { - "username": { - "title": "Username", - "type": "string", + "subject": { "anyOf": [ { "type": "string" @@ -3152,12 +4520,11 @@ } ] }, - "password": { - "title": "Password", - "type": "string", + "version": { "anyOf": [ { - "type": "string" + "type": "string", + "default": "latest" }, { "$ref": "#/$defs/expression" @@ -3165,144 +4532,65 @@ ] } }, - "oneOf": [ - { - "required": [ - "username" - ] - }, - { - "required": [ - "password" - ] - } - ] - } - }, - "additionalProperties": false, - "anyOf": [ - { "required": [ - "connect" - ] - } - ] - } - }, - "additionalProperties": false, - "required": [ - "credentials" - ] - } - }, - "maxProperties": 1 - }, - "topics": { - "title": "Topics", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false } - ] + } }, - "content": { - "$ref": "#/$defs/validator" - } + "additionalProperties": false } } } }, "additionalProperties": false }, - "routes": { - "items": { - "properties": { - "when": { - "items": { - "additionalProperties": false, - "properties": { - "session": { - "title": "Session", - "type": "array", - "items": { - "client-id": { - "title": "Client Id", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - }, - "subscribe": { - "title": "Subscribe", - "type": "array", - "items": { - "topic": { - "title": "Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - }, - "publish": { - "title": "Subscribe", - "type": "array", - "items": { - "topic": { - "title": "Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - } - } + "routes": false + }, + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] } }, - "with": false + "required": [ + "routes" + ] } - } - } - }, - "anyOf": [ - { - "required": [ - "exit" ] }, { - "required": [ - "routes" - ] + "properties": { + "kind": { + "const": "client" + }, + "routes": { + "items": { + "properties": { + "exit": false + } + } + }, + "exit": false + } } ] } @@ -3311,14 +4599,14 @@ "if": { "properties": { "type": { - "const": "mqtt-kafka" + "const": "openapi-asyncapi" } } }, "then": { "properties": { "type": { - "const": "mqtt-kafka" + "const": "openapi-asyncapi" }, "kind": { "enum": [ @@ -3328,86 +4616,113 @@ "vault": false, "options": { "properties": { - "server": { - "title": "Server Reference", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "topics": { - "title": "Topics", + "specs": { + "title": "Specs", "type": "object", "properties": { - "sessions": { - "title": "Kafka Sessions Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "messages": { - "title": "Kafka Messages Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "openapi": { + "title": "Openapi", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false } - ] + } }, - "retained": { - "title": "Kafka Retained Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" + "asyncapi": { + "title": "Asyncapi", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false } - ] - }, - "additionalProperties": false + } + } }, "required": [ - "sessions", - "retained", - "messages" - ], - "additionalProperties": false - }, - "clients": { - "title": "Clients", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } + "openapi", + "asyncapi" + ] } }, - "required": [ - "topics" - ], "additionalProperties": false }, "routes": { @@ -3415,65 +4730,48 @@ "properties": { "when": { "items": { - "anyOf": [ - { - "properties": { - "subscribe": { - "title": "Subscribe", - "type": "array", - "items": { - "properties": { - "topic": { - "title": "Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "additionalProperties": false - } + "properties": { + "api-id": { + "title": "ApiId", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" } - } + ] }, - { - "properties": { - "publish": { - "title": "Publish", - "type": "array", - "items": { - "properties": { - "topic": { - "title": "Topic", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "additionalProperties": false - } + "operation-id": { + "title": "OperationId", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" } - } + ] } - ] + }, + "additionalProperties": false } }, "with": { "properties": { - "messages": { - "title": "Messages Topic", - "type": "string", + "api-id": { + "title": "ApiId", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "operation-id": { + "title": "OperationId", "anyOf": [ { "type": "string" @@ -3483,8 +4781,7 @@ } ] } - }, - "additionalProperties": false + } } }, "required": [ @@ -3493,9 +4790,6 @@ } } }, - "required": [ - "options" - ], "anyOf": [ { "required": [ @@ -3540,36 +4834,34 @@ "properties": { "transport": { "title": "Transport", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "stream", + "datagram" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "stream", - "datagram" ] }, "family": { "title": "Family", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "inet", + "inet4", + "inet6", + "unix" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "inet", - "inet4", - "inet6", - "unix" ] }, "source": { @@ -3578,7 +4870,6 @@ "additionalProperties": false, "properties": { "host": { - "type": "string", "anyOf": [ { "type": "string" @@ -3589,7 +4880,6 @@ ] }, "port": { - "type": "integer", "anyOf": [ { "type": "integer" @@ -3607,7 +4897,6 @@ "additionalProperties": false, "properties": { "host": { - "type": "string", "anyOf": [ { "type": "string" @@ -3618,7 +4907,6 @@ ] }, "port": { - "type": "integer", "anyOf": [ { "type": "integer" @@ -3637,7 +4925,6 @@ "properties": { "alpn": { "title": "Application Protocol", - "type": "string", "anyOf": [ { "type": "string" @@ -3649,7 +4936,6 @@ }, "authority": { "title": "Authority", - "type": "string", "anyOf": [ { "type": "string" @@ -3661,7 +4947,6 @@ }, "identity": { "title": "Identity", - "type": "string", "anyOf": [ { "type": "string" @@ -3673,7 +4958,6 @@ }, "namespace": { "title": "Namespace", - "type": "string", "anyOf": [ { "type": "string" @@ -3690,7 +4974,6 @@ "properties": { "version": { "title": "Protocol Version", - "type": "string", "anyOf": [ { "type": "string" @@ -3702,7 +4985,6 @@ }, "cipher": { "title": "Cipher Name", - "type": "string", "anyOf": [ { "type": "string" @@ -3714,7 +4996,6 @@ }, "key": { "title": "Key Algorithm", - "type": "string", "anyOf": [ { "type": "string" @@ -3726,7 +5007,6 @@ }, "name": { "title": "Common Name", - "type": "string", "anyOf": [ { "type": "string" @@ -3738,7 +5018,6 @@ }, "signature": { "title": "Signature Algorithm", - "type": "string", "anyOf": [ { "type": "string" @@ -3797,16 +5076,45 @@ "options": { "properties": { "retry": { - "type": "integer", "anyOf": [ { - "type": "integer" + "type": "integer", + "default": 2000 }, { "$ref": "#/$defs/expression" } - ], - "default": 2000 + ] + }, + "requests": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "content": { + "$ref": "#/$defs/validator" + } + }, + "anyOf": [ + { + "required": [ + "path", + "content" + ] + } + ], + "additionalProperties": false + } } }, "additionalProperties": false @@ -3819,7 +5127,6 @@ "properties": { "path": { "title": "Path", - "type": "string", "anyOf": [ { "type": "string" @@ -3880,7 +5187,6 @@ "properties": { "path": { "title": "Path", - "type": "string", "anyOf": [ { "type": "string" @@ -3898,7 +5204,6 @@ "properties": { "topic": { "title": "Topic", - "type": "string", "anyOf": [ { "type": "string" @@ -3915,7 +5220,6 @@ "properties": { "key": { "title": "Key", - "type": "string", "anyOf": [ { "type": "string" @@ -3929,7 +5233,6 @@ "title": "Headers", "type": "object", "additionalProperties": { - "type": "string", "anyOf": [ { "type": "string" @@ -3948,20 +5251,19 @@ "properties": { "id": { "title": "Id", - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "${etag}", + "[\"${base64(key)}\",\"${etag}\"]" + ], + "default": "${etag}" }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "${etag}", - "[\"${base64(key)}\",\"${etag}\"]" - ], - "default": "${etag}" + ] } } } @@ -4000,89 +5302,17 @@ "then": { "properties": { "type": { - "const": "tcp" - }, - "kind": { - "enum": [ - "server", - "client" - ] - }, - "vault": false, - "options": { - "properties": { - "host": { - "title": "Host", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "port": { - "title": "Port", - "oneOf": [ - { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "type": "array", - "items": { - "oneOf": [ - { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - ] - } - } - ] - } - }, - "additionalProperties": false + "const": "tcp" + }, + "kind": { + "enum": [ + "server", + "client" + ] + }, + "vault": false, + "options": { + "$ref": "#/$defs/options/binding/tcp" }, "routes": { "items": { @@ -4092,7 +5322,6 @@ "properties": { "authority": { "title": "Authority", - "type": "string", "anyOf": [ { "type": "string" @@ -4104,7 +5333,6 @@ }, "cidr": { "title": "CIDR Mask", - "type": "string", "anyOf": [ { "type": "string", @@ -4119,7 +5347,6 @@ "title": "Port", "oneOf": [ { - "type": "integer", "anyOf": [ { "type": "integer" @@ -4130,14 +5357,10 @@ ] }, { - "type": "string", "anyOf": [ { "type": "string", "pattern": "^\\d+(-\\d+)?$" - }, - { - "$ref": "#/$defs/expression" } ] }, @@ -4146,7 +5369,6 @@ "items": { "oneOf": [ { - "type": "integer", "anyOf": [ { "type": "integer" @@ -4157,14 +5379,10 @@ ] }, { - "type": "string", "anyOf": [ { "type": "string", "pattern": "^\\d+(-\\d+)?$" - }, - { - "$ref": "#/$defs/expression" } ] } @@ -4247,122 +5465,6 @@ "proxy" ] }, - "options": { - "properties": { - "version": { - "title": "Version", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "keys": { - "title": "Vault Keys", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "trust": { - "title": "Vault Certificates", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "trustcacerts": { - "title": "Trust CA Certificates", - "type": "boolean", - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "sni": { - "title": "Server Names", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "alpn": { - "title": "Application Protocols", - "type": "array", - "items": { - "type": [ - "string", - "null" - ] - } - }, - "mutual": { - "title": "Mutual Authentication", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "required", - "requested", - "none" - ] - }, - "signers": { - "title": "Vault Signer Certificates", - "type": "array", - "items": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - }, - "additionalProperties": false - }, "routes": { "items": { "properties": { @@ -4371,7 +5473,6 @@ "properties": { "authority": { "title": "Authority", - "type": "string", "anyOf": [ { "type": "string" @@ -4383,7 +5484,6 @@ }, "alpn": { "title": "Application Protocol", - "type": "string", "anyOf": [ { "type": "string" @@ -4397,7 +5497,6 @@ "title": "Port", "oneOf": [ { - "type": "integer", "anyOf": [ { "type": "integer" @@ -4408,46 +5507,160 @@ ] }, { - "type": "string", "anyOf": [ { "type": "string", "pattern": "^\\d+(-\\d+)?$" - }, - { - "$ref": "#/$defs/expression" } ] }, { - "type": "array", - "items": { - "oneOf": [ - { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "type": "string", - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - ] - } + "type": "array", + "items": { + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + } + ] + } + } + ] + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "$ref": "#/$defs/options/binding/tls" + } + } + }, + { + "properties": { + "kind": { + "const": "server" + }, + "options": { + "$ref": "#/$defs/options/binding/tls" + } + } + }, + { + "properties": { + "kind": { + "const": "proxy" + }, + "options": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "ws" + } + } + }, + "then": { + "properties": { + "type": { + "const": "ws" + }, + "kind": { + "enum": [ + "client", + "server" + ] + }, + "vault": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "protocol": { + "title": "Subprotocol", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "scheme": { + "title": "Scheme", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" } ] } @@ -4471,98 +5684,22 @@ "routes" ] } - ] - } - }, - { - "if": { - "properties": { - "type": { - "const": "ws" - } - } - }, - "then": { - "properties": { - "type": { - "const": "ws" - }, - "kind": { - "enum": [ - "client", - "server" - ] - }, - "vault": false, - "options": { + ], + "oneOf": [ + { "properties": { - "defaults": { - "title": "Defaults", - "type": "object", - "additoinalProperties": "false", + "kind": { + "const": "client" + }, + "options": { "properties": { - "protocol": { - "title": "Subprotocol", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "scheme": { - "title": "Scheme", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "authority": { - "title": "Authority", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "path": { - "title": "Path", - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } - } - }, - "additionalProperties": false - }, - "routes": { - "items": { - "properties": { - "when": { - "items": { + "defaults": { + "title": "Defaults", + "type": "object", + "additionalProperties": false, "properties": { "protocol": { "title": "Subprotocol", - "type": "string", "anyOf": [ { "type": "string" @@ -4574,7 +5711,6 @@ }, "scheme": { "title": "Scheme", - "type": "string", "anyOf": [ { "type": "string" @@ -4586,7 +5722,6 @@ }, "authority": { "title": "Authority", - "type": "string", "anyOf": [ { "type": "string" @@ -4598,817 +5733,1303 @@ }, "path": { "title": "Path", - "type": "string", "anyOf": [ { "type": "string" }, - { - "$ref": "#/$defs/expression" + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "server" + }, + "options": false + } + } + ] + } + } + ] + }, + "converter": { + "oneOf": [ + { + "$ref": "#/$defs/converter/types" + }, + { + "$ref": "#/$defs/converter/model" + } + ], + "types": { + "anyOf": [ + { + "type": "string", + "enum": [ + "avro", + "double", + "float", + "int32", + "int64", + "json", + "protobuf", + "string" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "model": { + "type": "object", + "properties": { + "model": { + "$ref": "#/$defs/converter/types" + } + }, + "required": [ + "model" + ], + "allOf": [ + { + "if": { + "properties": { + "model": { + "const": "avro" + } + } + }, + "then": { + "properties": { + "model": { + "const": "avro" + }, + "view": { + "anyOf": [ + { + "type": "string", + "enum": [ + "json" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "strategy" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] } - ] + }, + "required": [ + "subject" + ], + "additionalProperties": false } - }, - "additoinalProperties": "false" + ] } - }, - "with": false - } + } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "double" } } }, - "anyOf": [ - { - "required": [ - "exit" - ] + "then": { + "properties": { + "model": { + "const": "double" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - { - "required": [ - "routes" - ] - } - ] - } - } - ] - }, - "converter": { - "type": "object", - "properties": { - "model": { - "$ref": "#/$defs/converter/types" - } - }, - "required": [ - "model" - ], - "allOf": [ - { - "if": { - "properties": { - "model": { - "const": "avro" - } + "additionalProperties": false } }, - "then": { - "properties": { - "model": { - "const": "avro" - }, - "view": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "json" - ] + { + "if": { + "properties": { + "model": { + "const": "float" + } + } + }, + "then": { + "properties": { + "model": { + "const": "float" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "catalog": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "id" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "schema": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "strategy": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } - }, - "required": [ - "strategy" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "subject": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } - }, - "required": [ - "subject" - ], - "additionalProperties": false - } - ] + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "int32" + } + } + }, + "then": { + "properties": { + "model": { + "const": "int32" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" } - } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] }, - "maxProperties": 1 + "multiple": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "int64" + } } }, - "additionalProperties": false - } - }, - { - "if": { - "properties": { - "model": { - "const": "json" - } + "then": { + "properties": { + "model": { + "const": "int64" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false } }, - "then": { - "properties": { - "model": { - "const": "json" - }, - "catalog": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "id" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "schema": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + { + "if": { + "properties": { + "model": { + "const": "json" + } + } + }, + "then": { + "properties": { + "model": { + "const": "json" + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } + "required": [ + "id" + ], + "additionalProperties": false }, - "required": [ - "schema" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "strategy": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } + "required": [ + "schema" + ], + "additionalProperties": false }, - "required": [ - "strategy" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "subject": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } + "required": [ + "strategy" + ], + "additionalProperties": false }, - "required": [ - "subject" - ], - "additionalProperties": false - } + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + } + ] + } + } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "protobuf" + } + } + }, + "then": { + "properties": { + "model": { + "const": "protobuf" + }, + "view": { + "anyOf": [ + { + "type": "string", + "enum": [ + "json" ] + }, + { + "$ref": "#/$defs/expression" } - } + ] }, - "maxProperties": 1 - } - }, - "additionalProperties": false - } - }, - { - "if": { - "properties": { - "model": { - "const": "protobuf" - } - } - }, - "then": { - "properties": { - "model": { - "const": "protobuf" - }, - "view": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "json" - ] - }, - "catalog": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "record": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } + "required": [ + "id", + "record" + ], + "additionalProperties": false }, - "required": [ - "id" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "schema": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "record": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } + "required": [ + "schema", + "record" + ], + "additionalProperties": false }, - "required": [ - "schema" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "strategy": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "record": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } + "required": [ + "strategy", + "record" + ], + "additionalProperties": false }, - "required": [ - "strategy" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "subject": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "record": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "subject" - ], - "additionalProperties": false - } - ] + "required": [ + "subject", + "record" + ], + "additionalProperties": false + } + ] + } } - } - }, - "maxProperties": 1 - } - }, - "additionalProperties": false - } - }, - { - "if": { - "properties": { - "model": { - "const": "string" - } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false } }, - "then": { - "properties": { - "model": { - "const": "string" - }, - "encoding": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "utf_8", - "utf_16" - ] + { + "if": { + "properties": { + "model": { + "const": "string" + } } }, - "additionalProperties": false + "then": { + "properties": { + "model": { + "const": "string" + }, + "encoding": { + "anyOf": [ + { + "type": "string", + "enum": [ + "utf_8", + "utf_16" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "minLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "maxLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } } + ] + } + }, + "validator": { + "oneOf": [ + { + "$ref": "#/$defs/validator/types" + }, + { + "$ref": "#/$defs/validator/model" } ], "types": { - "type": "string", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "double", + "float", + "int32", + "int64", + "json", + "string" + ] }, { "$ref": "#/$defs/expression" } - ], - "enum": [ - "avro", - "integer", - "json", - "protobuf", - "string" ] - } - }, - "validator": { - "type": "object", - "properties": { - "model": { - "$ref": "#/$defs/validator/types" - } }, - "required": [ - "model" - ], - "allOf": [ - { - "if": { - "properties": { - "model": { - "const": "json" + "model": { + "type": "object", + "properties": { + "model": { + "$ref": "#/$defs/validator/types" + } + }, + "required": [ + "model" + ], + "allOf": [ + { + "if": { + "properties": { + "model": { + "const": "double" + } } - } - }, - "then": { - "properties": { - "model": { - "const": "json" - }, - "catalog": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "integer", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "id" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "schema": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "strategy": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } - }, - "required": [ - "strategy" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "subject": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } - }, - "required": [ - "subject" - ], - "additionalProperties": false - } - ] + }, + "then": { + "properties": { + "model": { + "const": "double" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" } - } + ] }, - "maxProperties": 1 + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "float" + } } }, - "additionalProperties": false - } - }, - { - "if": { - "properties": { - "model": { - "const": "string" - } + "then": { + "properties": { + "model": { + "const": "float" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false } }, - "then": { - "properties": { - "model": { - "const": "string" + { + "if": { + "properties": { + "model": { + "const": "int32" + } + } + }, + "then": { + "properties": { + "model": { + "const": "int32" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, - "encoding": { - "type": "string", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "enum": [ - "utf_8" - ] + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "int64" + } } }, - "additionalProperties": false - } - } - ], - "types": { - "type": "string", - "anyOf": [ + "then": { + "properties": { + "model": { + "const": "int64" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, { - "type": "string" + "if": { + "properties": { + "model": { + "const": "json" + } + } + }, + "then": { + "properties": { + "model": { + "const": "json" + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "strategy" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + } + ] + } + } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false + } }, { - "$ref": "#/$defs/expression" + "if": { + "properties": { + "model": { + "const": "string" + } + } + }, + "then": { + "properties": { + "model": { + "const": "string" + }, + "encoding": { + "anyOf": [ + { + "type": "string", + "enum": [ + "utf_8" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "minLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "maxLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } } - ], - "enum": [ - "integer", - "json", - "string" ] } } From 597a7ad0463ce5fa8da8727ad21c32daa847a811 Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 6 Aug 2024 15:50:33 -0700 Subject: [PATCH 06/54] updated schema parser --- .check-schema/README.md | 2 +- .check-schema/index.js | 327 +-- .check-schema/package.json | 1 + .check-schema/pnpm-lock.yaml | 56 +- .check-schema/zilla-schema.json | 3475 +++++++------------------------ 5 files changed, 932 insertions(+), 2929 deletions(-) diff --git a/.check-schema/README.md b/.check-schema/README.md index 16efc6b8..865b097f 100644 --- a/.check-schema/README.md +++ b/.check-schema/README.md @@ -1 +1 @@ -docker run ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema >> zilla-schema.json +docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:0.9.89 start -v -Pzilla.engine.verbose.schema.plain > zilla-schema.json diff --git a/.check-schema/index.js b/.check-schema/index.js index f681687d..50248d83 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -1,178 +1,203 @@ const fs = require("fs"); const { marked } = require("marked"); -const schema = require("./zilla-schema.json"); -var errors = []; +const { $RefParser } = require("@apidevtools/json-schema-ref-parser"); +const schema = require("./parsed-zilla-schema.json"); -function getPageProps(tokens) { - var foundHeadings = []; - tokens - .filter(({ depth }) => depth > 2) - .forEach((t) => { - if (t.text && t.type && t.type === "heading") { - t.tokens - .filter(({ type }) => type === "text") - .forEach(({ text }) => foundHeadings.push(text)); - } - }); - return foundHeadings; -} +const main = async () => { + await $RefParser.dereference(schema); + // console.log("RefParser", JSON.stringify(schema, null, 4)) + var errors = []; -function getObjProps(attr, obj, reqKeys) { - var props = []; - // console.log(attr, reqKeys) - Object.keys(obj || {}).forEach((k) => { + function getPageProps(name, tokens) { + var foundHeadings = [name]; + tokens + .filter(({ depth, type }) => type == "heading" && depth == 3) + .forEach((t) => { + if (t.text && t.type && t.type === "heading") { + t.tokens + .filter(({ type }) => type === "text") + .forEach(({ text }) => foundHeadings.push(`${name}.${text}`)); + } + }); + tokens + .filter(({ depth, type }) => type == "heading" && depth > 3) + .forEach((t) => { + if (t.text && t.type && t.type === "heading") { + t.tokens + .filter(({ type }) => type === "text") + .forEach(({ text }) => foundHeadings.push(text)); + } + }); + return foundHeadings; + } - if (!!obj[k].deprecated) return + function getObjProps(attr, obj, reqKeys) { + var props = []; + // if (obj.options) console.log("options", obj) + Object.keys(obj || {}).forEach((k) => { + var i = obj[k]; + if (!!i.deprecated) return - //recurse - if (obj[k].properties) { - props.push(...getObjProps(k, obj[k].properties, obj[k].required)); - } - if (obj[k].items && obj[k].items.properties) { - props.push( - ...getObjProps(`${k}[]`, obj[k].items.properties, obj[k].items.required) - ); - } - if (obj[k].items && obj[k].items.anyOf) { - obj[k].items.anyOf - .filter(({ properties }) => !!properties) + //recurse + if (i.properties) { + props.push(...getObjProps(k, i.properties, i.required)); + } + if (i.items?.properties) { + props.push( + ...getObjProps(`${k}[]`, i.items.properties, i.items.required) + ); + } + if (i.patternProperties) { + var ppObj = + i.patternProperties[Object.keys(i.patternProperties)[0]]; + if (ppObj.properties) + props.push(...getObjProps(k, ppObj.properties, ppObj.properties)); + } + + i.anyOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => - props.push(...getObjProps(`${k}[]`, properties, required)) + props.push(...getObjProps(k, properties, required)) ); - } - if (obj[k].patternProperties) { - var ppObj = - obj[k].patternProperties[Object.keys(obj[k].patternProperties)[0]]; - if (ppObj.properties) - props.push(...getObjProps(`${k}`, ppObj.properties, ppObj.properties)); - } - if (obj[k].additionalProperties && obj[k].additionalProperties.oneOf) { - obj[k].additionalProperties.oneOf - .filter(({ properties }) => !!properties) + i.items?.anyOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => - props.push(...getObjProps(`${k}`, properties, required)) + props.push(...getObjProps(`${k}[]`, properties, required)) ); - } - if (obj[k].anyOf) { - obj[k].anyOf - .filter(({ properties }) => !!properties) + + i.oneOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => - props.push(...getObjProps(`${k}`, properties, required)) + props.push(...getObjProps(k, properties, [...(i.required || []), ...(required || [])])) ); - } - if (obj[k].oneOf) { - obj[k].oneOf - .filter(({ properties }) => !!properties) + i.additionalProperties?.oneOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => - props.push(...getObjProps(`${k}`, properties, required)) + props.push(...getObjProps(k, properties, required)) ); - } - //base - if (!!!obj[k]) return - if (reqKeys && !reqKeys.include) { - reqKeys = Object.keys(reqKeys); - } - var req = !!reqKeys?.includes(k); - var path = [attr, k].filter((s) => !!s).join("."); - if (obj[k].properties) { - props.push([path, "object", req, obj[k].const]); - } else if (obj[k].additionalProperties) { - if (obj[k].additionalProperties.oneOf) { + + //collect + if (!!!i) return + if (reqKeys && !reqKeys.include) { + reqKeys = Object.keys(reqKeys); + } + var req = !!reqKeys?.includes(k); + var path = [attr, k].filter((s) => !!s).join("."); + if (i.properties) { + props.push([path, "object", req, i.const]); + } else if (i.additionalProperties) { + if (i.additionalProperties.oneOf) { + props.push([ + path, + i.additionalProperties.oneOf.map(({ type }) => type).join(","), + req, + i.const, + ]); + } else { + props.push([path, i.additionalProperties.type, req, i.const]); + } + } else if (i.items) { + props.push([path, "array", req, i.const]); + } else if (i.type) { + if (i.const) path = `${path}: ${i.const}`; + props.push([path, i.type, req, i.const]); + } else if (i.const) { + props.push([`${path}: ${i.const}`, "string", req, i.const]); + } else if (i.enum) { + props.push([path, i.enum.join(","), req, i.const]); + } else if (i.const) { + props.push([path, i.const, req, i.const]); + } else if (i.oneOf) { props.push([ path, - obj[k].additionalProperties.oneOf.map(({ type }) => type).join(","), + i.oneOf + .filter(({ type }) => !!type) + .map(({ type }) => type) + .join(","), req, - obj[k].const, + i.const, ]); - } else { - props.push([path, obj[k].additionalProperties.type, req, obj[k].const]); } - } else if (obj[k].items) { - props.push([path, "array", req, obj[k].const]); - } else if (obj[k].type) { - if (obj[k].const) path = `${path}: ${obj[k].const}`; - props.push([path, obj[k].type, req, obj[k].const]); - } else if (obj[k].const) { - props.push([`${path}: ${obj[k].const}`, "string", req, obj[k].const]); - } else if (obj[k].enum) { - props.push([path, obj[k].enum.join(","), req, obj[k].const]); - } else if (obj[k].const) { - props.push([path, obj[k].const, req, obj[k].const]); - } else if (obj[k].oneOf) { - props.push([ - path, - obj[k].oneOf - .filter(({ type }) => !!type) - .map(({ type }) => type) - .join(","), - req, - obj[k].const, - ]); - } - }); - return props; -} + }); + return props; + } -var sections = ["binding", "guard", "vault", "catalog"] - .map((type) => - schema.$defs[type]?.allOf.map(({ if: fi, then }) => ({ - type, - folder: `${type}s`, + var sections = ["binding", "guard", "vault", "catalog"] + .map((type) => + schema.$defs[type]?.allOf.map(({ if: fi, then }) => ({ + type, + folder: `${type}s`, + name: fi.properties.type.const, + props: { + [fi.properties.type.const]: { + ...(schema.$defs[type] || {}), ...(then || {}), + } + }, + })) + ) + .flat(1); + + sections.push( + ...schema.$defs.telemetry.exporter?.allOf.map(({ if: fi, then }) => ({ + type: "exporter", + folder: "telemetry.exporters", name: fi.properties.type.const, - props: { ...(schema.$defs[type].properties || {}), ...then.properties }, + props: { + [fi.properties.type.const]: { + ...(schema.$defs.telemetry.exporter || {}), ...(then || {}), + } + }, })) - ) - .flat(1); + ); + // sections.push( + // ...schema.$defs.converter.model?.allOf.map(({ if: fi, then }) => ({ + // type: "model", + // folder: "models", + // name: fi.properties.model.const, + // props:{ [fi.properties.model.const]: { + // ...(schema.$defs.converter.model || {}), ...(then || {}) , + // }}, + // })) + // ); -sections.push( - ...schema.$defs.telemetry.exporter?.allOf.map(({ if: fi, then }) => ({ - type: "exporter", - folder: "telemetry.exporters", - name: fi.properties.type.const, - props: then.properties, - })) -); + sections.forEach(({ type, folder, name, props }) => { + delete props.type; + var attrs = getObjProps(null, props, []); + var filename = `src/reference/config/${folder.replaceAll(".", "/")}/${type + .split(".") + .findLast((n) => !!n)}-${name}.md`; + // console.log('parsing', filename) + if ( + fs.existsSync(filename) + ) { + var headers = getPageProps(name, + marked.lexer( + fs.readFileSync(filename, "utf8") + .toString() + ) + ).sort(); + var sorted = attrs.map((a) => a[0]).sort(); + // console.log("findings", type, name, sorted, headers); + var addList = sorted.filter((x) => + !headers.includes(x) && + !["telemetry", "telemetry.metrics", "type", "catalog", "entry"].includes(x) + ); + var removeList = headers.filter((x) => + !sorted.includes(x) && + !["routes[].exit", "routes[].guarded"].includes(x) + ); + if (addList.length) console.log(type, name, "add", addList); + if (removeList.length) console.log(type, name, "remove", removeList); + } else { + errors.push(`missing ${name}`); + } + }); -sections.forEach(({ type, folder, name, props }) => { - delete props.type; - var attrs = getObjProps(null, props, []); - var filename = `src/reference/config/${folder.replaceAll(".", "/")}/${type - .split(".") - .findLast((n) => !!n)}-${name}.md`; - // console.log('parsing', filename) - if ( - fs.existsSync(filename) - ) { - var headers = getPageProps( - marked.lexer( - fs.readFileSync(filename, "utf8") - .toString() - ) - ).sort(); - var sorted = attrs.map((a) => a[0]).sort(); - // console.log("findings", type, name, sorted, headers); - var addList = sorted.filter((x) => - !headers.includes(x) && - !["telemetry", "telemetry.metrics", "type", "catalog"].includes(x) - ); - var removeList = headers.filter((x) => - !sorted.includes(x) && - !["routes[].exit", "routes[].guarded"].includes(x) - ); - if(addList.length) console.log(type,name,"add",addList); - if(removeList.length) console.log(type,name,"remove",removeList); - // if (name == "mqtt" ) console.log(sorted, headers) - } else { - errors.push(`missing ${name}`); - } -}); + //check metrics + // { + // type: 'telemetry.metrics', + // name: 'grpc', + // props: schema.$defs.telemetry.metrics.items.enum.filter((m) => m.startsWith('grpc')), + // } -//check metrics -// { -// type: 'telemetry.metrics', -// name: 'grpc', -// props: schema.$defs.telemetry.metrics.items.enum.filter((m) => m.startsWith('grpc')), -// } + // console.log(errors) -// console.log(errors) +}; +main(); diff --git a/.check-schema/package.json b/.check-schema/package.json index 1ecc5757..3f145229 100644 --- a/.check-schema/package.json +++ b/.check-schema/package.json @@ -11,6 +11,7 @@ "author": "", "license": "ISC", "devDependencies": { + "@apidevtools/json-schema-ref-parser": "^11.7.0", "marked": "^11.0.0" } } diff --git a/.check-schema/pnpm-lock.yaml b/.check-schema/pnpm-lock.yaml index 7da248ff..33b4a554 100644 --- a/.check-schema/pnpm-lock.yaml +++ b/.check-schema/pnpm-lock.yaml @@ -1,18 +1,60 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -devDependencies: - marked: - specifier: ^11.0.0 - version: 11.0.0 +importers: + + .: + devDependencies: + '@apidevtools/json-schema-ref-parser': + specifier: ^11.7.0 + version: 11.7.0 + marked: + specifier: ^11.0.0 + version: 11.0.0 packages: - /marked@11.0.0: + '@apidevtools/json-schema-ref-parser@11.7.0': + resolution: {integrity: sha512-pRrmXMCwnmrkS3MLgAIW5dXRzeTv6GLjkjb4HmxNnvAKXN1Nfzp4KmGADBQvlVUcqi+a5D+hfGDLLnd5NnYxog==} + engines: {node: '>= 16'} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + marked@11.0.0: resolution: {integrity: sha512-2GsW34uXaFEGTQ/+3rCnNC6vUYTAgFuDLGl70v/aWinA5mIJtTrrFAmfbLOfVvgPyxXuDVL9He/7reCK+6j3Sw==} engines: {node: '>= 18'} hasBin: true - dev: true + +snapshots: + + '@apidevtools/json-schema-ref-parser@11.7.0': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + + '@jsdevtools/ono@7.1.3': {} + + '@types/json-schema@7.0.15': {} + + argparse@2.0.1: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + marked@11.0.0: {} diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 4989ae92..e40fe113 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -5,15 +5,8 @@ "properties": { "name": { "title": "Name", - "anyOf": [ - { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" }, "vaults": { "title": "Vaults", @@ -43,14 +36,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -105,16 +91,9 @@ "properties": { "type": { "title": "Type", - "anyOf": [ - { - "type": "string", - "enum": [ - "filesystem" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "filesystem" ] }, "options": { @@ -147,35 +126,14 @@ "type": "object", "properties": { "store": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "type": { - "anyOf": [ - { - "type": "string", - "default": "pkcs12" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "pkcs12" }, "password": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -185,35 +143,14 @@ "type": "object", "properties": { "store": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "type": { - "anyOf": [ - { - "type": "string", - "default": "pkcs12" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "pkcs12" }, "password": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -223,35 +160,14 @@ "type": "object", "properties": { "store": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "type": { - "anyOf": [ - { - "type": "string", - "default": "pkcs12" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "pkcs12" }, "password": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -269,16 +185,9 @@ "properties": { "type": { "title": "Type", - "anyOf": [ - { - "type": "string", - "enum": [ - "jwt" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "jwt" ] }, "options": { @@ -308,40 +217,19 @@ "properties": { "issuer": { "title": "Issuer", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "audience": { "title": "Audience", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "keys": { "title": "Keys", "oneOf": [ { - "anyOf": [ - { - "type": "string", - "format": "uri", - "pattern": "^(https?)://" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "format": "uri", + "pattern": "^(https?)://" }, { "type": "array", @@ -351,25 +239,11 @@ "properties": { "kty": { "title": "Key Type", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "kid": { "title": "Key ID", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": true, @@ -383,14 +257,7 @@ }, "challenge": { "title": "Challenge", - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" } }, "additionalProperties": false @@ -438,18 +305,11 @@ "properties": { "type": { "title": "Type", - "anyOf": [ - { - "type": "string", - "enum": [ - "otlp", - "prometheus", - "stdout" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "otlp", + "prometheus", + "stdout" ] } }, @@ -473,14 +333,7 @@ "options": { "properties": { "interval": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" }, "signals": { "type": "array", @@ -502,37 +355,16 @@ "default": "http" }, "location": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "overrides": { "type": "object", "properties": { "metrics": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "logs": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -576,39 +408,18 @@ "properties": { "scheme": { "title": "Scheme", - "anyOf": [ - { - "type": "string", - "enum": [ - "http" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "http" ] }, "port": { "title": "Port", - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, "path": { "title": "Path", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -649,19 +460,15 @@ "properties": { "type": { "title": "Type", - "anyOf": [ - { - "type": "string", - "enum": [ - "apicurio", - "filesystem", - "inline", - "karapace" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "apicurio-registry", + "apicurio", + "filesystem", + "inline", + "karapace-schema-registry", + "karapace", + "schema-registry" ] }, "options": { @@ -678,79 +485,50 @@ "if": { "properties": { "type": { - "const": "apicurio" + "enum": [ + "apicurio-registry", + "apicurio" + ] } } }, "then": { "properties": { "type": { - "const": "apicurio" + "enum": [ + "apicurio-registry", + "apicurio" + ] }, "options": { "properties": { "url": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "group-id": { - "anyOf": [ - { - "type": "string", - "default": "default" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "default" }, "use-id": { - "anyOf": [ - { - "type": "string", - "enum": [ - "globalId", - "contentId" - ], - "default": "globalId" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "globalId", + "contentId" + ], + "default": "globalId" }, "id-encoding": { - "anyOf": [ - { - "type": "string", - "enum": [ - "default", - "legacy" - ], - "default": "default" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, + "type": "string", + "enum": [ + "default", + "legacy" + ], + "default": "default" + }, "max-age": { "title": "Max Age", - "anyOf": [ - { - "type": "number", - "default": 300 - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number", + "default": 300 } }, "additionalProperties": false @@ -782,14 +560,7 @@ "type": "object", "properties": { "path": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -829,25 +600,11 @@ "type": "object", "properties": { "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" }, "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -868,52 +625,43 @@ "if": { "properties": { "type": { - "const": "karapace" + "enum": [ + "karapace-schema-registry", + "karapace" + ] } } }, "then": { "properties": { "type": { - "const": "karapace" + "enum": [ + "karapace-schema-registry", + "karapace" + ] }, "options": { - "properties": { - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "context": { - "anyOf": [ - { - "type": "string", - "default": "default" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "max-age": { - "title": "Max Age", - "anyOf": [ - { - "type": "number", - "default": 300 - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "additionalProperties": false + "$ref": "#/$defs/options/catalog/schema-registry" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "const": "schema-registry" + } + } + }, + "then": { + "properties": { + "type": { + "const": "schema-registry" + }, + "options": { + "$ref": "#/$defs/options/catalog/schema-registry" } }, "additionalProperties": false @@ -927,14 +675,7 @@ "type": "object", "properties": { "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } }, "required": [ @@ -946,25 +687,11 @@ "type": "object", "properties": { "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -976,25 +703,11 @@ "type": "object", "properties": { "strategy": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -1006,25 +719,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -1053,45 +752,24 @@ "title": "Cookies", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string", - "pattern": ".*\\{credentials\\}.*" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": ".*\\{credentials\\}.*" } }, "headers": { "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string", - "pattern": ".*\\{credentials\\}.*" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": ".*\\{credentials\\}.*" } }, "query": { "title": "Query Parameters", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string", - "pattern": ".*\\{credentials\\}.*" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": ".*\\{credentials\\}.*" } } }, @@ -1131,19 +809,12 @@ "properties": { "mechanism": { "title": "Mechanism", - "anyOf": [ - { - "type": "string", - "enum": [ - "plain", - "scram-sha-1", - "scram-sha-256", - "scram-sha-512" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "plain", + "scram-sha-1", + "scram-sha-256", + "scram-sha-512" ] } }, @@ -1156,25 +827,11 @@ }, "username": { "title": "Username", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "password": { "title": "Password", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -1190,25 +847,11 @@ }, "username": { "title": "Username", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "password": { "title": "Password", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -1224,25 +867,11 @@ }, "username": { "title": "Username", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "password": { "title": "Password", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -1258,25 +887,11 @@ }, "username": { "title": "Username", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "password": { "title": "Password", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -1295,60 +910,22 @@ "additionalProperties": false, "properties": { "name": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "defaultOffset": { - "anyOf": [ - { - "type": "string", - "enum": [ - "live", - "historical" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "live", + "historical" ] }, "deltaType": { - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "json_patch" - ], - "deprecated": true - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "headers": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "anyOf": [ - { - "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "additionalProperties": false + "type": "string", + "enum": [ + "none", + "json_patch" + ], + "deprecated": true }, "key": { "$ref": "#/$defs/converter" @@ -1380,25 +957,11 @@ "properties": { "username": { "title": "Username", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "password": { "title": "Password", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "oneOf": [ @@ -1438,57 +1001,28 @@ "properties": { "host": { "title": "Host", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "port": { "title": "Port", "oneOf": [ { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] + "type": "string", + "pattern": "^\\d+(-\\d+)?$" }, { "type": "array", "items": { "oneOf": [ { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] + "type": "string", + "pattern": "^\\d+(-\\d+)?$" } ] } @@ -1502,66 +1036,31 @@ "properties": { "version": { "title": "Version", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "keys": { "title": "Vault Keys", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "trust": { "title": "Vault Certificates", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "trustcacerts": { "title": "Trust CA Certificates", - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "boolean" }, "sni": { "title": "Server Names", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "alpn": { @@ -1576,37 +1075,42 @@ }, "mutual": { "title": "Mutual Authentication", - "anyOf": [ - { - "type": "string", - "enum": [ - "required", - "requested", - "none" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "required", + "requested", + "none" ] }, "signers": { "title": "Vault Signer Certificates", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, "additionalProperties": false } + }, + "catalog": { + "schema-registry": { + "properties": { + "url": { + "type": "string" + }, + "context": { + "type": "string", + "default": "default" + }, + "max-age": { + "title": "Max Age", + "type": "number", + "default": 300 + } + }, + "additionalProperties": false + } } }, "binding": { @@ -1615,14 +1119,7 @@ "properties": { "vault": { "title": "Vault", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "catalog": { "type": "object", @@ -1638,36 +1135,30 @@ }, "type": { "title": "Type", - "anyOf": [ - { - "type": "string", - "enum": [ - "asyncapi", - "echo", - "fan", - "filesystem", - "grpc", - "grpc-kafka", - "http", - "http-filesystem", - "http-kafka", - "kafka", - "kafka-grpc", - "mqtt", - "mqtt-kafka", - "openapi", - "openapi-asyncapi", - "proxy", - "sse", - "sse-kafka", - "tcp", - "tls", - "ws" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "amqp", + "asyncapi", + "echo", + "fan", + "filesystem", + "grpc", + "grpc-kafka", + "http", + "http-filesystem", + "http-kafka", + "kafka", + "kafka-grpc", + "mqtt", + "mqtt-kafka", + "openapi", + "openapi-asyncapi", + "proxy", + "sse", + "sse-kafka", + "tcp", + "tls", + "ws" ] }, "kind": { @@ -1694,14 +1185,7 @@ "properties": { "exit": { "title": "Exit", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "when": { "title": "Conditions", @@ -1724,14 +1208,7 @@ "type": "array", "items": { "title": "Role", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -1751,26 +1228,12 @@ }, "exit": { "title": "Exit", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "entry": { "title": "Entry", - "anyOf": [ - { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" } }, "additionalProperties": false, @@ -1796,11 +1259,74 @@ "const": "remote_server" } }, - "entry": false + "entry": false + } + } + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "amqp" + } + } + }, + "then": { + "properties": { + "type": { + "const": "amqp" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "additionalProperties": false, + "properties": { + "address": { + "title": "Address", + "type": "string" + }, + "capabilities": { + "title": "Capabilities", + "type": "string", + "enum": [ + "send_only", + "receive_only", + "send_and_receive" + ], + "default": "send_and_receive" + } + } + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] } - } - ], - "allOf": [ + }, { "if": { "properties": { @@ -1838,38 +1364,17 @@ "properties": { "url": { "title": "URL", - "anyOf": [ - { - "type": "string", - "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" }, "host": { "title": "Host", - "anyOf": [ - { - "type": "string", - "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" }, "pathname": { "title": "Path Name", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -1882,25 +1387,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -1966,36 +1457,15 @@ "properties": { "sessions": { "title": "Kafka Sessions Channel", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "messages": { "title": "Kafka Messages Channel", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "retained": { "title": "Kafka Retained Channel", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "additionalProperties": false }, @@ -2016,25 +1486,11 @@ "properties": { "api-id": { "title": "Spec API Id", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "operation-id": { "title": "MQTT Operation Id", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -2043,25 +1499,11 @@ "properties": { "api-id": { "title": "Spec API Id", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "operation-id": { "title": "MQTT Operation Id", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -2225,30 +1667,16 @@ "properties": { "location": { "title": "Location", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "symlinks": { "title": "Symbolic Links", - "anyOf": [ - { - "type": "string", - "enum": [ - "follow", - "ignore" - ], - "default": "ignore" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "follow", + "ignore" + ], + "default": "ignore" } }, "additionalProperties": false @@ -2286,14 +1714,7 @@ "properties": { "method": { "title": "Method", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "metadata": { "title": "Metadata", @@ -2301,28 +1722,14 @@ "additionalProperties": { "oneOf": [ { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, { "type": "object", "properties": { "base64": { "title": "Base64 value", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -2363,14 +1770,7 @@ "type": "array", "items": { "title": "Service", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "deprecated": true } @@ -2417,29 +1817,15 @@ "properties": { "field": { "title": "Grpc Last Message Id", - "anyOf": [ - { - "type": "integer", - "minimum": 1, - "maximum": 536870911, - "default": 32767 - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer", + "minimum": 1, + "maximum": 536870911, + "default": 32767 }, "metadata": { "title": "Grpc Last Message Id Metadata Name", - "anyOf": [ - { - "type": "string", - "default": "last-message-id" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "last-message-id" } } }, @@ -2449,15 +1835,8 @@ "properties": { "metadata": { "title": "Idempotency Metadata name", - "anyOf": [ - { - "type": "string", - "default": "idempotency-key" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "idempotency-key" } } }, @@ -2471,51 +1850,23 @@ "properties": { "service": { "title": "Grpc Service Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:service" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:service" }, "method": { "title": "Grpc Method Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:method" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:method" }, "correlation-id": { "title": "Correlation-Id Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:correlation-id" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:correlation-id" }, "reply-to": { "title": "Reply to Topic", - "anyOf": [ - { - "type": "string", - "default": "zilla:reply-to" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:reply-to" } }, "additionalProperties": false @@ -2537,15 +1888,8 @@ "properties": { "method": { "title": "Method", - "anyOf": [ - { - "type": "string", - "pattern": "^(?[^/]+)/(?[^/]+)" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^(?[^/]+)/(?[^/]+)" }, "metadata": { "title": "Metadata", @@ -2553,28 +1897,14 @@ "additionalProperties": { "oneOf": [ { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, { "type": "object", "properties": { "base64": { "title": "Base64 value", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -2591,26 +1921,12 @@ "properties": { "capability": { "title": "Capability", - "anyOf": [ - { - "type": "string", - "const": "fetch" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "const": "fetch" }, "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "filters": { "title": "Filters", @@ -2619,27 +1935,13 @@ "properties": { "key": { "title": "Key", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "headers": { "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -2653,78 +1955,36 @@ "properties": { "capability": { "title": "Capability", - "anyOf": [ - { - "type": "string", - "const": "produce" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "const": "produce" }, "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "acks": { "title": "Acks", - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "leader_only", - "in_sync_replicas" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" ] }, "key": { "title": "Key", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "overrides": { "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "reply-to": { "title": "Reply-To topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false, @@ -2782,17 +2042,10 @@ ], "items": { "title": "Version", - "anyOf": [ - { - "type": "string", - "enum": [ - "http/1.1", - "h2" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "http/1.1", + "h2" ] } }, @@ -2802,14 +2055,7 @@ "properties": { "policy": { "title": "Policy", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "oneOf": [ @@ -2833,68 +2079,33 @@ "title": "Origins", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "methods": { "title": "Methods", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "headers": { "title": "Headers", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "credentials": { "title": "Credentials", - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "boolean" } }, "additionalProperties": false }, "max-age": { "title": "Max Age", - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" }, "expose": { "title": "Expose", @@ -2904,14 +2115,7 @@ "title": "Headers", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -2929,14 +2133,7 @@ "title": "Overrides", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "requests": { @@ -2945,46 +2142,25 @@ "type": "object", "properties": { "path": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "method": { - "anyOf": [ - { - "type": "string", - "enum": [ - "GET", - "PUT", - "POST", - "DELETE", - "OPTIONS", - "HEAD", - "PATCH", - "TRACE" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "GET", + "PUT", + "POST", + "DELETE", + "OPTIONS", + "HEAD", + "PATCH", + "TRACE" ] }, "content-type": { "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "headers": { @@ -3028,26 +2204,12 @@ "status": { "oneOf": [ { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, { "type": "array", "items": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } } ] @@ -3055,14 +2217,7 @@ "content-type": { "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "headers": { @@ -3135,14 +2290,7 @@ "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -3218,14 +2366,7 @@ "properties": { "path": { "title": "Path", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -3235,14 +2376,7 @@ "properties": { "path": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false, @@ -3295,15 +2429,8 @@ "properties": { "header": { "title": "Idempotency Key HTTP Header", - "anyOf": [ - { - "type": "string", - "default": "idempotency-key" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "idempotency-key" } }, "required": [ @@ -3321,27 +2448,13 @@ "properties": { "reply-to": { "title": "Reply-To Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:reply-to" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:reply-to" }, "correlation-id": { "title": "Correlation-Id Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:correlation-id" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:correlation-id" } }, "additionalProperties": false @@ -3363,25 +2476,11 @@ "properties": { "method": { "title": "Method", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "path": { "title": "Path", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -3393,26 +2492,12 @@ "properties": { "capability": { "title": "Capability", - "anyOf": [ - { - "type": "string", - "const": "fetch" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "const": "fetch" }, "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "filters": { "title": "Filters", @@ -3421,27 +2506,13 @@ "properties": { "key": { "title": "Key", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "headers": { "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -3454,15 +2525,8 @@ "properties": { "content-type": { "title": "Content Type", - "anyOf": [ - { - "type": "string", - "const": "application/json" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "const": "application/json" }, "patch": { "title": "Patch", @@ -3470,27 +2534,13 @@ "properties": { "initial": { "title": "Initial Value", - "anyOf": [ - { - "type": "string", - "const": "[]" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "const": "[]" }, "path": { "title": "Path", - "anyOf": [ - { - "type": "string", - "const": "/-" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "const": "/-" } }, "required": [ @@ -3512,91 +2562,42 @@ "properties": { "capability": { "title": "Capability", - "anyOf": [ - { - "type": "string", - "const": "produce" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "const": "produce" }, "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "acks": { "title": "Acks", - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "leader_only", - "in_sync_replicas" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" ] }, "key": { "title": "Key", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "overrides": { "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, - "reply-to": { - "title": "Reply-To", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "reply-to": { + "title": "Reply-To", + "type": "string" }, "async": { "title": "Async", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -3655,26 +2656,12 @@ "properties": { "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "groupId": { "title": "groupId", - "anyOf": [ - { - "type": "string", - "deprecated": true - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "deprecated": true } }, "additionalProperties": false @@ -3713,14 +2700,7 @@ "additionalProperties": false, "properties": { "name": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "key": { "$ref": "#/$defs/converter" @@ -3747,14 +2727,7 @@ "title": "Bootstrap", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "topics": { @@ -3776,15 +2749,8 @@ "title": "Servers", "type": "array", "items": { - "anyOf": [ - { - "type": "string", - "pattern": "([^\\:]+):(\\d+)" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "([^\\:]+):(\\d+)" } }, "sasl": { @@ -3821,18 +2787,11 @@ "properties": { "acks": { "title": "Acks", - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "leader_only", - "in_sync_replicas" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" ] }, "idempotency": { @@ -3841,15 +2800,8 @@ "properties": { "metadata": { "title": "Idempotency Metadata name", - "anyOf": [ - { - "type": "string", - "default": "idempotency-key" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "idempotency-key" } } }, @@ -3863,51 +2815,23 @@ "properties": { "service": { "title": "Grpc Service Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:service" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:service" }, "method": { "title": "Grpc Method Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:method" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:method" }, "correlation-id": { "title": "Correlation-Id Kafka Header", - "anyOf": [ - { - "type": "string", - "default": "zilla:correlation-id" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:correlation-id" }, "reply-to": { "title": "Reply to Topic", - "anyOf": [ - { - "type": "string", - "default": "zilla:reply-to" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "zilla:reply-to" } }, "additionalProperties": false @@ -3925,62 +2849,27 @@ "properties": { "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "key": { "title": "Key", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "headers": { "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "reply-to": { "title": "ReplyTo", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "method": { "title": "Method", - "anyOf": [ - { - "type": "string", - "pattern": "^(?[^/]+)/(?[^/]+)" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^(?[^/]+)/(?[^/]+)" } }, "additionalProperties": false, @@ -3994,25 +2883,11 @@ "properties": { "scheme": { "title": "Scheme", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "authority": { "title": "Authority", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false, @@ -4067,14 +2942,7 @@ "items": { "client-id": { "title": "Client Id", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -4084,14 +2952,7 @@ "items": { "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -4101,14 +2962,7 @@ "items": { "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -4144,17 +2998,10 @@ "title": "Versions", "type": "array", "items": { - "anyOf": [ - { - "type": "string", - "enum": [ - "v3.1.1", - "v5" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "v3.1.1", + "v5" ] } }, @@ -4169,14 +3016,7 @@ "additionalProperties": false, "properties": { "name": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "content": { "$ref": "#/$defs/validator" @@ -4238,14 +3078,7 @@ "properties": { "server": { "title": "Server Reference", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "topics": { "title": "Topics", @@ -4253,36 +3086,15 @@ "properties": { "sessions": { "title": "Kafka Sessions Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "messages": { "title": "Kafka Messages Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "retained": { "title": "Kafka Retained Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "additionalProperties": false }, @@ -4297,14 +3109,7 @@ "title": "Clients", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "publish": { @@ -4313,20 +3118,13 @@ "properties": { "qosMax": { "title": "Maximum QoS", - "anyOf": [ - { - "type": "string", - "enum": [ - "at_most_once", - "at_least_once", - "exactly_once" - ], - "default": "exactly_once" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "at_most_once", + "at_least_once", + "exactly_once" + ], + "default": "exactly_once" }, "additionalProperties": false }, @@ -4356,14 +3154,7 @@ "properties": { "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -4380,14 +3171,7 @@ "properties": { "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -4402,14 +3186,7 @@ "properties": { "messages": { "title": "Messages Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -4490,15 +3267,8 @@ "properties": { "url": { "title": "URL", - "anyOf": [ - { - "type": "string", - "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" } }, "additionalProperties": false @@ -4511,25 +3281,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -4634,25 +3390,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -4682,25 +3424,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -4733,25 +3461,11 @@ "properties": { "api-id": { "title": "ApiId", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "operation-id": { "title": "OperationId", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -4761,25 +3475,11 @@ "properties": { "api-id": { "title": "ApiId", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "operation-id": { "title": "OperationId", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -4834,34 +3534,20 @@ "properties": { "transport": { "title": "Transport", - "anyOf": [ - { - "type": "string", - "enum": [ - "stream", - "datagram" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "stream", + "datagram" ] }, "family": { "title": "Family", - "anyOf": [ - { - "type": "string", - "enum": [ - "inet", - "inet4", - "inet6", - "unix" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "inet", + "inet4", + "inet6", + "unix" ] }, "source": { @@ -4870,24 +3556,10 @@ "additionalProperties": false, "properties": { "host": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "port": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } } }, @@ -4897,24 +3569,10 @@ "additionalProperties": false, "properties": { "host": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "port": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } } }, @@ -4925,47 +3583,19 @@ "properties": { "alpn": { "title": "Application Protocol", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "authority": { "title": "Authority", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "identity": { "title": "Identity", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "namespace": { "title": "Namespace", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "secure": { "title": "Secure", @@ -4974,58 +3604,23 @@ "properties": { "version": { "title": "Protocol Version", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "cipher": { "title": "Cipher Name", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "key": { "title": "Key Algorithm", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "name": { "title": "Common Name", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "signature": { "title": "Signature Algorithm", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -5076,15 +3671,8 @@ "options": { "properties": { "retry": { - "anyOf": [ - { - "type": "integer", - "default": 2000 - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer", + "default": 2000 }, "requests": { "type": "array", @@ -5092,14 +3680,7 @@ "type": "object", "properties": { "path": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "content": { "$ref": "#/$defs/validator" @@ -5127,14 +3708,7 @@ "properties": { "path": { "title": "Path", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -5187,14 +3761,7 @@ "properties": { "path": { "title": "Path", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -5204,14 +3771,7 @@ "properties": { "topic": { "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "filters": { "title": "Filters", @@ -5220,27 +3780,13 @@ "properties": { "key": { "title": "Key", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "headers": { "title": "Headers", "type": "object", "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } }, @@ -5251,19 +3797,12 @@ "properties": { "id": { "title": "Id", - "anyOf": [ - { - "type": "string", - "enum": [ - "${etag}", - "[\"${base64(key)}\",\"${etag}\"]" - ], - "default": "${etag}" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "${etag}", + "[\"${base64(key)}\",\"${etag}\"]" + ], + "default": "${etag}" } } } @@ -5322,69 +3861,33 @@ "properties": { "authority": { "title": "Authority", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "cidr": { "title": "CIDR Mask", - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-fA-F:.]+/(\\d{1,3})$" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "^[0-9a-fA-F:.]+/(\\d{1,3})$" }, "port": { "title": "Port", "oneOf": [ { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] + "type": "string", + "pattern": "^\\d+(-\\d+)?$" }, { "type": "array", "items": { "oneOf": [ { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] + "type": "string", + "pattern": "^\\d+(-\\d+)?$" } ] } @@ -5473,68 +3976,32 @@ "properties": { "authority": { "title": "Authority", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "alpn": { "title": "Application Protocol", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "port": { "title": "Port", "oneOf": [ { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] + "type": "string", + "pattern": "^\\d+(-\\d+)?$" }, { "type": "array", "items": { "oneOf": [ { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] + "type": "string", + "pattern": "^\\d+(-\\d+)?$" } ] } @@ -5621,48 +4088,20 @@ "items": { "properties": { "protocol": { - "title": "Subprotocol", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "scheme": { - "title": "Scheme", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "title": "Subprotocol", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "type": "string" }, "authority": { "title": "Authority", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "path": { "title": "Path", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -5700,47 +4139,19 @@ "properties": { "protocol": { "title": "Subprotocol", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "scheme": { "title": "Scheme", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "authority": { "title": "Authority", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "path": { "title": "Path", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } } } @@ -5772,23 +4183,16 @@ } ], "types": { - "anyOf": [ - { - "type": "string", - "enum": [ - "avro", - "double", - "float", - "int32", - "int64", - "json", - "protobuf", - "string" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "avro", + "double", + "float", + "int32", + "int64", + "json", + "protobuf", + "string" ] }, "model": { @@ -5816,16 +4220,9 @@ "const": "avro" }, "view": { - "anyOf": [ - { - "type": "string", - "enum": [ - "json" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "json" ] }, "catalog": { @@ -5839,14 +4236,7 @@ "type": "object", "properties": { "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } }, "required": [ @@ -5858,25 +4248,11 @@ "type": "object", "properties": { "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -5888,25 +4264,11 @@ "type": "object", "properties": { "strategy": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -5918,25 +4280,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -5971,40 +4319,19 @@ "const": "double" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" } }, "additionalProperties": false @@ -6024,40 +4351,19 @@ "const": "float" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" } }, "additionalProperties": false @@ -6077,40 +4383,19 @@ "const": "int32" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } }, "additionalProperties": false @@ -6130,40 +4415,19 @@ "const": "int64" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" } }, "additionalProperties": false @@ -6193,14 +4457,7 @@ "type": "object", "properties": { "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } }, "required": [ @@ -6212,25 +4469,11 @@ "type": "object", "properties": { "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -6242,25 +4485,11 @@ "type": "object", "properties": { "strategy": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -6272,25 +4501,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -6324,17 +4539,10 @@ "model": { "const": "protobuf" }, - "view": { - "anyOf": [ - { - "type": "string", - "enum": [ - "json" - ] - }, - { - "$ref": "#/$defs/expression" - } + "view": { + "type": "string", + "enum": [ + "json" ] }, "catalog": { @@ -6348,24 +4556,10 @@ "type": "object", "properties": { "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" }, "record": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -6378,35 +4572,14 @@ "type": "object", "properties": { "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" }, "record": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -6419,35 +4592,14 @@ "type": "object", "properties": { "strategy": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" }, "record": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -6460,35 +4612,14 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" }, "record": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "required": [ @@ -6524,50 +4655,22 @@ "const": "string" }, "encoding": { - "anyOf": [ - { - "type": "string", - "enum": [ - "utf_8", - "utf_16" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "utf_8", + "utf_16" ] }, "minLength": { - "anyOf": [ - { - "type": "integer", - "minimum": 1 - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer", + "minimum": 1 }, "maxLength": { - "anyOf": [ - { - "type": "integer", - "minimum": 1 - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer", + "minimum": 1 }, "pattern": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false @@ -6586,21 +4689,14 @@ } ], "types": { - "anyOf": [ - { - "type": "string", - "enum": [ - "double", - "float", - "int32", - "int64", - "json", - "string" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "double", + "float", + "int32", + "int64", + "json", + "string" ] }, "model": { @@ -6628,40 +4724,19 @@ "const": "double" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" } }, "additionalProperties": false @@ -6681,40 +4756,19 @@ "const": "float" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" } }, "additionalProperties": false @@ -6734,40 +4788,19 @@ "const": "int32" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } }, "additionalProperties": false @@ -6787,40 +4820,19 @@ "const": "int64" }, "format": { - "anyOf": [ - { - "type": "string", - "enum": [ - "binary", - "text" - ], - "default": "text" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" }, "range": { - "anyOf": [ - { - "type": "string", - "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" }, "multiple": { - "anyOf": [ - { - "type": "number" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "number" } }, "additionalProperties": false @@ -6850,14 +4862,7 @@ "type": "object", "properties": { "id": { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer" } }, "required": [ @@ -6869,25 +4874,11 @@ "type": "object", "properties": { "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -6899,25 +4890,11 @@ "type": "object", "properties": { "strategy": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -6929,25 +4906,11 @@ "type": "object", "properties": { "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" }, "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string", + "default": "latest" } }, "required": [ @@ -6982,49 +4945,21 @@ "const": "string" }, "encoding": { - "anyOf": [ - { - "type": "string", - "enum": [ - "utf_8" - ] - }, - { - "$ref": "#/$defs/expression" - } + "type": "string", + "enum": [ + "utf_8" ] }, "minLength": { - "anyOf": [ - { - "type": "integer", - "minimum": 1 - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer", + "minimum": 1 }, "maxLength": { - "anyOf": [ - { - "type": "integer", - "minimum": 1 - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "integer", + "minimum": 1 }, "pattern": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "string" } }, "additionalProperties": false From addf53c832e11ca4949dcdd7d717c3434370adfb Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 13 Aug 2024 09:58:41 -0400 Subject: [PATCH 07/54] add type header --- .check-schema/index.js | 2 +- src/.vuepress/theme.ts | 2 +- src/reference/config/bindings/binding-http.md | 92 +++++++++---------- src/reference/config/guards/guard-jwt.md | 80 +++++++--------- 4 files changed, 80 insertions(+), 96 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index 50248d83..31586a14 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -1,7 +1,7 @@ const fs = require("fs"); const { marked } = require("marked"); const { $RefParser } = require("@apidevtools/json-schema-ref-parser"); -const schema = require("./parsed-zilla-schema.json"); +const schema = require("./zilla-schema.json"); const main = async () => { await $RefParser.dereference(schema); diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts index 3a18b468..78189de0 100644 --- a/src/.vuepress/theme.ts +++ b/src/.vuepress/theme.ts @@ -41,7 +41,7 @@ export default hopeTheme({ "/": { navbar: enNavbar, sidebar: enSidebar, - headerDepth: 3, + headerDepth: 4, displayFooter: true, footer: ` `, diff --git a/src/reference/config/bindings/binding-http.md b/src/reference/config/bindings/binding-http.md index dc81337d..42accb0c 100644 --- a/src/reference/config/bindings/binding-http.md +++ b/src/reference/config/bindings/binding-http.md @@ -57,31 +57,31 @@ Conditional routes based on `http` request headers are used to route these netwo - [kind\*](#kind) - [options](#options) -- [options.versions](#options-versions) -- [options.access-control](#options-access-control) - - [access-control.policy\*](#access-control-policy) - - [access-control.policy: same-origin](#access-control-policy-same-origin) - - [access-control.policy: cross-origin](#access-control-policy-cross-origin) - - [access-control.allow](#access-control-allow) - - [allow.origins](#allow-origins) - - [allow.methods](#allow-methods) - - [allow.headers](#allow-headers) - - [allow.credentials](#allow-credentials) - - [access-control.max-age](#access-control-max-age) - - [access-control.expose](#access-control-expose) - - [expose.headers](#expose-headers) -- [options.authorization](#options-authorization) - - [authorization.credentials](#authorization-credentials) - - [credentials.cookies](#credentials-cookies) - - [credentials.headers](#credentials-headers) - - [credentials.query](#credentials-query) -- [options.overrides](#options-overrides) + - [options.versions](#options-versions) + - [options.access-control](#options-access-control) + - [access-control.policy\*](#access-control-policy) + - [access-control.policy: same-origin](#access-control-policy-same-origin) + - [access-control.policy: cross-origin](#access-control-policy-cross-origin) + - [access-control.allow](#access-control-allow) + - [allow.origins](#allow-origins) + - [allow.methods](#allow-methods) + - [allow.headers](#allow-headers) + - [allow.credentials](#allow-credentials) + - [access-control.max-age](#access-control-max-age) + - [access-control.expose](#access-control-expose) + - [expose.headers](#expose-headers) + - [options.authorization](#options-authorization) + - [authorization.credentials](#authorization-credentials) + - [credentials.cookies](#credentials-cookies) + - [credentials.headers](#credentials-headers) + - [credentials.query](#credentials-query) + - [options.overrides](#options-overrides) - [exit](#exit) - [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].headers](#when-headers) -- [routes\[\].exit\*](#routes-exit) + - [routes\[\].guarded](#routes-guarded) + - [routes\[\].when](#routes-when) + - [when\[\].headers](#when-headers) + - [routes\[\].exit\*](#routes-exit) ::: right \* required @@ -114,25 +114,25 @@ options: custom-text: custom-value ``` -### options.versions +#### options.versions > `array` of `enum` [ "http/1.1", "h2" ] Supported protocol versions. -### options.access-control +#### options.access-control > **oneOf**: [same-origin](#access-control-policy-same-origin) | [cross-origin](#access-control-policy-cross-origin) Access control policy for the `HTTP` protocol. -#### access-control.policy\* +##### access-control.policy\* > `enum` [ "same-origin" , "cross-origin" ] Supported access control policies. -#### access-control.policy: same-origin +##### access-control.policy: same-origin > `string` @@ -144,7 +144,7 @@ options: policy: same-origin ``` -#### access-control.policy: cross-origin +##### access-control.policy: cross-origin > `object` @@ -156,56 +156,56 @@ options: policy: cross-origin ``` -#### access-control.allow +##### access-control.allow > `object` | Default: all origins, methods and headers, without credentials Allowed cross-origin request origins, methods, headers and credentials. CORS allowed request origins, methods, headers and credentials for the `HTTP` protocol. -##### allow.origins +###### allow.origins > `array` of `string` Allowed request origins. -##### allow.methods +###### allow.methods > `array` of `string` Allowed request methods. -##### allow.headers +###### allow.headers > `array` of `string` Allowed request headers. -##### allow.credentials +###### allow.credentials > `boolean` Support `fetch` credentials mode `include`. -#### access-control.max-age +##### access-control.max-age > `integer` Maximum cache age (in seconds) for allowed headers and methods. -#### access-control.expose +##### access-control.expose > `object` | Default: all response headers Exposed cross-origin response headers. -##### expose.headers +###### expose.headers > `array` of `string` Exposed response headers. -### options.authorization +#### options.authorization > `object` as map of named objects @@ -219,31 +219,31 @@ authorization: authorization: Bearer {credentials} ``` -#### authorization.credentials +##### authorization.credentials > `object` Defines how to extract credentials from the HTTP request. -##### credentials.cookies +###### credentials.cookies > `object` as map of `string` Named cookie value pattern with `{credentials}`. -##### credentials.headers +###### credentials.headers > `map` of `name: value` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. -##### credentials.query +###### credentials.query > `object` as map of `string` Named query parameter value pattern with `{credentials}`. -### options.overrides +#### options.overrides > `map` of `name: value` properties @@ -274,7 +274,7 @@ routes: exit: echo_server ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -287,7 +287,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -302,13 +302,13 @@ routes: ":authority": example.com:443 ``` -#### when[].headers +##### when[].headers > `map` of `name: value` properties Header name value pairs (all match). -### routes[].exit\* +#### routes[].exit\* > `string` diff --git a/src/reference/config/guards/guard-jwt.md b/src/reference/config/guards/guard-jwt.md index 1dae4cae..afc4d887 100644 --- a/src/reference/config/guards/guard-jwt.md +++ b/src/reference/config/guards/guard-jwt.md @@ -37,23 +37,15 @@ guards: x: MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4 y: 4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM use: enc - kid: '1' + kid: "1" - kty: RSA n: 0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw e: AQAB alg: RS256 - kid: '2011-04-29' + kid: "2011-04-29" challenge: 30 ``` -## Summary - -Defines a guard with `JSON Web Token (JWT)` support. - -The `jwt` guard uses public keys to verify the integrity of `JWT` access tokens when identifying authorized subjects and their associated roles scope. The token issuer and audience can also be constrained to prevent access tokens from other applications from being reused inappropriately. - -Each verified JWT access token has an expiration time, and an optional challenge window prior to the expiration time that can be used by specific protocol bindings to send a challenge to renew the access token before it expires. - ## Configuration :::: note Properties @@ -72,12 +64,19 @@ Each verified JWT access token has an expiration time, and an optional challenge - [keys\[\].x](#keys-x) - [keys\[\].y](#keys-y) -::: right -\* required +::: right \* required ::: :::: +### type: jwt + +Defines a guard with `JSON Web Token (JWT)` support. + +The `jwt` guard uses public keys to verify the integrity of `JWT` access tokens when identifying authorized subjects and their associated roles scope. The token issuer and audience can also be constrained to prevent access tokens from other applications from being reused inappropriately. + +Each verified JWT access token has an expiration time, and an optional challenge window prior to the expiration time that can be used by specific protocol bindings to send a challenge to renew the access token before it expires. + ### options > `object` @@ -95,15 +94,15 @@ options: x: MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4 y: 4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM use: enc - kid: '1' + kid: "1" - kty: RSA n: 0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw e: AQAB alg: RS256 - kid: '2011-04-29' + kid: "2011-04-29" ``` -### options.issuer +#### options.issuer > `string` @@ -127,56 +126,41 @@ Challenge period (seconds). If not provided, relies on the `issuer` to infer the location of a remote `.well-known/jwks.json` file. -##### keys[].kty +::: info Examples -> `string` +**kty** `string` -Key type, e.g. `RSA` , `EC`. +> Key type, e.g. "RSA" , "EC". -##### keys[].kid +**kid** `string` -> `string` - -Key ID. - -##### keys[].n - -> `string` - -`RSA` `modulus`. - -##### keys[].e +> Key ID. -> `string` +**n** `string` -`RSA` `exponent`. +> "RSA" modulus. -##### keys[].alg +**e** `string` -> `string` +> "RSA" exponent. -`RSA` algorithm, e.g. `RS256`. +**alg** `string` -##### keys[].crv +> "RSA" algorithm, e.g. "RS256". -> `string` +**crv** `string` -`EC` curve name. +> "EC" curve name. -##### keys[].x +**x** `string` -> `string` +> "EC" point X coordinate. -`EC` point `x` coordinate. - -##### keys[].y - -> `string` +**y** `string` -`EC` point `y` coordinate. +> "EC" point Y coordinate. --- -::: right -\* required +::: right \* required ::: From 23a4a9f0a82c8a50ec657cd45ff125dfcb3dbaa6 Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 16 Aug 2024 08:46:57 -0400 Subject: [PATCH 08/54] chore: move type and kind and remove ToC --- .check-schema/README.md | 2 +- .check-schema/index.js | 18 +- .check-schema/pnpm-lock.yaml | 8 +- .check-schema/zilla-schema.json | 99 +- .editorconfig | 1 + .vscode/settings.json | 3 - README.md | 14 +- src/.vuepress/config.ts | 2 +- src/.vuepress/public/assets/zilla-schema.json | 7158 +++++++++++++++++ src/how-tos/grpc/grpc.route-guide.service.md | 6 +- .../telemetry/opentelemetry-protocol.md | 9 +- src/reference/config/bindings/binding-amqp.md | 78 +- .../config/bindings/binding-asyncapi.md | 110 +- src/reference/config/bindings/binding-echo.md | 26 +- src/reference/config/bindings/binding-fan.md | 39 +- .../config/bindings/binding-filesystem.md | 45 +- .../config/bindings/binding-grpc-kafka.md | 130 +- src/reference/config/bindings/binding-grpc.md | 93 +- .../bindings/binding-http-filesystem.md | 63 +- .../config/bindings/binding-http-kafka.md | 152 +- src/reference/config/bindings/binding-http.md | 100 +- .../config/bindings/binding-kafka-grpc.md | 89 +- .../config/bindings/binding-kafka-proxy.md | 50 +- .../config/bindings/binding-kafka.md | 80 +- .../config/bindings/binding-mqtt-kafka.md | 100 +- src/reference/config/bindings/binding-mqtt.md | 99 +- .../bindings/binding-openapi-asyncapi.md | 74 +- .../config/bindings/binding-openapi.md | 74 +- .../config/bindings/binding-proxy.md | 73 +- .../config/bindings/binding-sse-kafka.md | 72 +- src/reference/config/bindings/binding-sse.md | 81 +- src/reference/config/bindings/binding-tcp.md | 71 +- src/reference/config/bindings/binding-tls.md | 92 +- src/reference/config/bindings/binding-ws.md | 77 +- .../catalogs/catalog-apicurio-registry.md | 20 +- .../config/catalogs/catalog-aws-glue.md | 19 +- .../catalog-confluent-schema-registry.md | 24 +- .../config/catalogs/catalog-filesystem.md | 18 +- .../config/catalogs/catalog-inline.md | 21 +- .../catalog-karapace-schema-registry.md | 18 +- .../catalogs/catalog-schema-registry.md | 18 +- src/reference/config/guards/guard-jwt.md | 48 +- src/reference/config/models/model-avro.md | 21 +- src/reference/config/models/model-integer.md | 4 +- src/reference/config/models/model-json.md | 20 +- src/reference/config/models/model-protobuf.md | 22 +- src/reference/config/models/model-string.md | 33 +- src/reference/config/overview.md | 21 +- .../exporters/exporter-aws-cloudwatch.md | 34 +- .../telemetry/exporters/exporter-otlp.md | 21 +- .../exporters/exporter-prometheus.md | 16 +- .../telemetry/exporters/exporter-syslog.md | 18 +- src/reference/config/vaults/vault-aws.md | 23 +- .../config/vaults/vault-filesystem.md | 52 +- src/tutorials/grpc/zilla.yaml | 13 +- 55 files changed, 8180 insertions(+), 1492 deletions(-) create mode 100644 src/.vuepress/public/assets/zilla-schema.json diff --git a/.check-schema/README.md b/.check-schema/README.md index 865b097f..0108e7b4 100644 --- a/.check-schema/README.md +++ b/.check-schema/README.md @@ -1 +1 @@ -docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:0.9.89 start -v -Pzilla.engine.verbose.schema.plain > zilla-schema.json +docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema.plain > zilla-schema.json diff --git a/.check-schema/index.js b/.check-schema/index.js index 31586a14..10770765 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -33,7 +33,7 @@ const main = async () => { function getObjProps(attr, obj, reqKeys) { var props = []; - // if (obj.options) console.log("options", obj) + // console.log(attr, Object.keys(obj || {})); Object.keys(obj || {}).forEach((k) => { var i = obj[k]; if (!!i.deprecated) return @@ -72,7 +72,6 @@ const main = async () => { props.push(...getObjProps(k, properties, required)) ); - //collect if (!!!i) return if (reqKeys && !reqKeys.include) { @@ -80,6 +79,7 @@ const main = async () => { } var req = !!reqKeys?.includes(k); var path = [attr, k].filter((s) => !!s).join("."); + // console.log(`${path}: ${i.const}`) if (i.properties) { props.push([path, "object", req, i.const]); } else if (i.additionalProperties) { @@ -100,8 +100,8 @@ const main = async () => { props.push([path, i.type, req, i.const]); } else if (i.const) { props.push([`${path}: ${i.const}`, "string", req, i.const]); - } else if (i.enum) { - props.push([path, i.enum.join(","), req, i.const]); + } else if (i.enum?.length) { + i.enum.forEach((e) => props.push([`${path}: ${e}`, e, req, i.const])); } else if (i.const) { props.push([path, i.const, req, i.const]); } else if (i.oneOf) { @@ -127,7 +127,10 @@ const main = async () => { name: fi.properties.type.const, props: { [fi.properties.type.const]: { - ...(schema.$defs[type] || {}), ...(then || {}), + ...(then || {}), + required: [...(schema.$defs[type].required || []), ...(then.required || [])], + oneOf: [...(schema.$defs[type].oneOf || []), ...(then.oneOf || [])], + properties: {...(schema.$defs[type].properties || {}), ...(then.properties || {})}, } }, })) @@ -163,7 +166,7 @@ const main = async () => { var filename = `src/reference/config/${folder.replaceAll(".", "/")}/${type .split(".") .findLast((n) => !!n)}-${name}.md`; - // console.log('parsing', filename) + // console.log(filename, JSON.stringify(props, null, 4)) if ( fs.existsSync(filename) ) { @@ -176,8 +179,7 @@ const main = async () => { var sorted = attrs.map((a) => a[0]).sort(); // console.log("findings", type, name, sorted, headers); var addList = sorted.filter((x) => - !headers.includes(x) && - !["telemetry", "telemetry.metrics", "type", "catalog", "entry"].includes(x) + !headers.includes(x) ); var removeList = headers.filter((x) => !sorted.includes(x) && diff --git a/.check-schema/pnpm-lock.yaml b/.check-schema/pnpm-lock.yaml index 33b4a554..af7319d0 100644 --- a/.check-schema/pnpm-lock.yaml +++ b/.check-schema/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 11.7.0 marked: specifier: ^11.0.0 - version: 11.0.0 + version: 11.2.0 packages: @@ -34,8 +34,8 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - marked@11.0.0: - resolution: {integrity: sha512-2GsW34uXaFEGTQ/+3rCnNC6vUYTAgFuDLGl70v/aWinA5mIJtTrrFAmfbLOfVvgPyxXuDVL9He/7reCK+6j3Sw==} + marked@11.2.0: + resolution: {integrity: sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==} engines: {node: '>= 18'} hasBin: true @@ -57,4 +57,4 @@ snapshots: dependencies: argparse: 2.0.1 - marked@11.0.0: {} + marked@11.2.0: {} diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index e40fe113..5b99b911 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -902,37 +902,35 @@ ] }, "cache_server_topics": { - "topics": { - "title": "Topics", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "defaultOffset": { - "type": "string", - "enum": [ - "live", - "historical" - ] - }, - "deltaType": { - "type": "string", - "enum": [ - "none", - "json_patch" - ], - "deprecated": true - }, - "key": { - "$ref": "#/$defs/converter" - }, - "value": { - "$ref": "#/$defs/converter" - } + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "defaultOffset": { + "type": "string", + "enum": [ + "live", + "historical" + ] + }, + "deltaType": { + "type": "string", + "enum": [ + "none", + "json_patch" + ], + "deprecated": true + }, + "key": { + "$ref": "#/$defs/converter" + }, + "value": { + "$ref": "#/$defs/converter" } } } @@ -1121,18 +1119,6 @@ "title": "Vault", "type": "string" }, - "catalog": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "$ref": "#/$defs/cataloged" - } - } - }, - "maxProperties": 1 - }, "type": { "title": "Type", "type": "string", @@ -1229,11 +1215,6 @@ "exit": { "title": "Exit", "type": "string" - }, - "entry": { - "title": "Entry", - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" } }, "additionalProperties": false, @@ -1241,28 +1222,6 @@ "type", "kind" ], - "anyOf": [ - { - "properties": { - "kind": { - "const": "remote_server" - } - }, - "required": [ - "entry" - ] - }, - { - "properties": { - "kind": { - "not": { - "const": "remote_server" - } - }, - "entry": false - } - } - ], "allOf": [ { "if": { diff --git a/.editorconfig b/.editorconfig index 185bd9e1..89240092 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,5 +6,6 @@ end_of_line = lf insert_final_newline = true [{package.json,*.yml,*.md}] +trim_trailing_whitespace = true indent_style = space indent_size = 2 diff --git a/.vscode/settings.json b/.vscode/settings.json index ac314a1d..16359895 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -33,9 +33,6 @@ "explorer.confirmDragAndDrop": false, "markdown.extension.orderedList.autoRenumber": false, "markdown.extension.orderedList.marker": "one", - "markdown.extension.toc.levels": "3..6", - "markdown.extension.toc.slugifyMode": "gitea", - "markdown.extension.toc.updateOnSave": false, "markdown.updateLinksOnFileMove.enabled": "always", "markdownlint.run": "onSave", "prettier.bracketSameLine": true, diff --git a/README.md b/README.md index 22b120e9..cd7a7c56 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ DocumentationGet StartedExamples • - Blog + Blog @@ -180,6 +180,18 @@ parentArray: Description. ```` +### Generate schema asset + +capture the output and delete the first and last lines + +```bash +docker run -it --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema > src/.vuepress/public/assets/zilla-schema.json +``` + +```bash +pnpm check-schema > schema-edits.txt +``` + ## Provide feedback We’d love to hear your feedback. Please file documentation issues only in the docs GitHub repository. You can file a new issue to suggest improvements or if you see any errors in the existing documentation. diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts index e3a7de80..44cd126d 100644 --- a/src/.vuepress/config.ts +++ b/src/.vuepress/config.ts @@ -58,7 +58,7 @@ export default defineUserConfig({ ], markdown: { headers: { - level: [2, 3, 4], + level: [2, 3, 4, 5, 6], }, }, }); diff --git a/src/.vuepress/public/assets/zilla-schema.json b/src/.vuepress/public/assets/zilla-schema.json new file mode 100644 index 00000000..b006d189 --- /dev/null +++ b/src/.vuepress/public/assets/zilla-schema.json @@ -0,0 +1,7158 @@ + +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Namespace", + "type": "object", + "properties": { + "name": { + "title": "Name", + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "vaults": { + "title": "Vaults", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/vault" + } + }, + "additionalProperties": false + }, + "guards": { + "title": "Guards", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/guard" + } + }, + "additionalProperties": false + }, + "telemetry": { + "title": "Telemetry", + "type": "object", + "properties": { + "attributes": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "metrics": { + "$ref": "#/$defs/telemetry/metrics" + }, + "exporters": { + "title": "Exporters", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/telemetry/exporter" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "catalogs": { + "title": "Catalogs", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/catalog" + } + }, + "additionalProperties": false + }, + "bindings": { + "title": "Bindings", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/binding" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "name" + ], + "$defs": { + "expression": { + "type": "string", + "pattern": "\\$\\{\\{\\s*([^\\s\\}]*)\\.([^\\s\\}]*)\\s*\\}\\}" + }, + "vault": { + "type": "object", + "properties": { + "type": { + "title": "Type", + "anyOf": [ + { + "type": "string", + "enum": [ + "filesystem" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "options": { + "title": "Options", + "type": "object" + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "filesystem" + } + } + }, + "then": { + "properties": { + "type": { + "const": "filesystem" + }, + "options": { + "properties": { + "keys": { + "title": "Keys", + "type": "object", + "properties": { + "store": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string", + "default": "pkcs12" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + }, + "trust": { + "title": "Trust Certificates", + "type": "object", + "properties": { + "store": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string", + "default": "pkcs12" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + }, + "signers": { + "title": "Signer Certificates", + "type": "object", + "properties": { + "store": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "type": { + "anyOf": [ + { + "type": "string", + "default": "pkcs12" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + } + } + ] + }, + "guard": { + "type": "object", + "properties": { + "type": { + "title": "Type", + "anyOf": [ + { + "type": "string", + "enum": [ + "jwt" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "options": { + "title": "Options", + "type": "object" + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "jwt" + } + } + }, + "then": { + "properties": { + "type": { + "const": "jwt" + }, + "options": { + "properties": { + "issuer": { + "title": "Issuer", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "audience": { + "title": "Audience", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "keys": { + "title": "Keys", + "oneOf": [ + { + "anyOf": [ + { + "type": "string", + "format": "uri", + "pattern": "^(https?)://" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "type": "array", + "items": { + "title": "Key", + "type": "object", + "properties": { + "kty": { + "title": "Key Type", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "kid": { + "title": "Key ID", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": true, + "required": [ + "kty", + "kid" + ] + } + } + ] + }, + "challenge": { + "title": "Challenge", + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "required": [ + "options" + ] + } + } + ] + }, + "telemetry": { + "metrics": { + "type": "array", + "items": { + "enum": [ + "grpc.request.size", + "grpc.response.size", + "grpc.active.requests", + "grpc.duration", + "grpc.requests.per.rpc", + "grpc.responses.per.rpc", + "http.request.size", + "http.response.size", + "http.active.requests", + "http.duration", + "stream.active.received", + "stream.active.sent", + "stream.opens.received", + "stream.opens.sent", + "stream.data.received", + "stream.data.sent", + "stream.errors.received", + "stream.errors.sent", + "stream.closes.received", + "stream.closes.sent" + ] + }, + "uniqueItems": true + }, + "exporter": { + "title": "Exporter", + "type": "object", + "properties": { + "type": { + "title": "Type", + "anyOf": [ + { + "type": "string", + "enum": [ + "otlp", + "prometheus", + "stdout" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "type" + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "otlp" + } + } + }, + "then": { + "properties": { + "type": { + "const": "otlp" + }, + "options": { + "properties": { + "interval": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "signals": { + "type": "array", + "items": { + "enum": [ + "metrics", + "logs", + "traces" + ] + } + }, + "endpoint": { + "type": "object", + "properties": { + "protocol": { + "enum": [ + "http" + ], + "default": "http" + }, + "location": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "overrides": { + "type": "object", + "properties": { + "metrics": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "logs": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + }, + "required": [ + "endpoint" + ], + "additionalProperties": false + }, + "additionalProperties": false + }, + "required": [ + "options" + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "prometheus" + } + } + }, + "then": { + "properties": { + "type": { + "const": "prometheus" + }, + "options": { + "properties": { + "endpoints": { + "type": "array", + "items": { + "properties": { + "scheme": { + "title": "Scheme", + "anyOf": [ + { + "type": "string", + "enum": [ + "http" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "title": "Port", + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "scheme", + "port" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "stdout" + } + } + }, + "then": { + "properties": { + "type": { + "const": "stdout" + } + } + } + } + ] + } + }, + "catalog": { + "type": "object", + "properties": { + "type": { + "title": "Type", + "anyOf": [ + { + "type": "string", + "enum": [ + "apicurio-registry", + "apicurio", + "filesystem", + "inline", + "karapace-schema-registry", + "karapace", + "schema-registry" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "options": { + "title": "Options", + "type": "object" + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "enum": [ + "apicurio-registry", + "apicurio" + ] + } + } + }, + "then": { + "properties": { + "type": { + "enum": [ + "apicurio-registry", + "apicurio" + ] + }, + "options": { + "properties": { + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "group-id": { + "anyOf": [ + { + "type": "string", + "default": "default" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "use-id": { + "anyOf": [ + { + "type": "string", + "enum": [ + "globalId", + "contentId" + ], + "default": "globalId" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "id-encoding": { + "anyOf": [ + { + "type": "string", + "enum": [ + "default", + "legacy" + ], + "default": "default" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "max-age": { + "title": "Max Age", + "anyOf": [ + { + "type": "number", + "default": 300 + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "const": "filesystem" + } + } + }, + "then": { + "properties": { + "type": { + "const": "filesystem" + }, + "options": { + "properties": { + "subjects": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Subject", + "type": "object", + "properties": { + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "path" + ], + "additionalProperties": false + } + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "const": "inline" + } + } + }, + "then": { + "properties": { + "type": { + "const": "inline" + }, + "options": { + "properties": { + "subjects": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Subject", + "type": "object", + "properties": { + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + } + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "enum": [ + "karapace-schema-registry", + "karapace" + ] + } + } + }, + "then": { + "properties": { + "type": { + "enum": [ + "karapace-schema-registry", + "karapace" + ] + }, + "options": { + "$ref": "#/$defs/options/catalog/schema-registry" + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "type": { + "const": "schema-registry" + } + } + }, + "then": { + "properties": { + "type": { + "const": "schema-registry" + }, + "options": { + "$ref": "#/$defs/options/catalog/schema-registry" + } + }, + "additionalProperties": false + } + } + ] + }, + "cataloged": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "strategy" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + } + ] + }, + "options": { + "binding": { + "http": { + "authorization": { + "title": "Authorizations", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Authorization", + "type": "object", + "properties": { + "credentials": { + "title": "Credentials", + "type": "object", + "properties": { + "cookies": { + "title": "Cookies", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "pattern": ".*\\{credentials\\}.*" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "pattern": ".*\\{credentials\\}.*" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "query": { + "title": "Query Parameters", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "pattern": ".*\\{credentials\\}.*" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "cookies" + ] + }, + { + "required": [ + "headers" + ] + }, + { + "required": [ + "query" + ] + } + ] + } + }, + "additionalProperties": false, + "required": [ + "credentials" + ] + } + }, + "maxProperties": 1 + } + }, + "kafka": { + "sasl": { + "title": "SASL", + "type": "object", + "properties": { + "mechanism": { + "title": "Mechanism", + "anyOf": [ + { + "type": "string", + "enum": [ + "plain", + "scram-sha-1", + "scram-sha-256", + "scram-sha-512" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mechanism": { + "const": "plain" + }, + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "username", + "password" + ] + }, + { + "additionalProperties": false, + "properties": { + "mechanism": { + "const": "scram-sha-1" + }, + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "username", + "password" + ] + }, + { + "additionalProperties": false, + "properties": { + "mechanism": { + "const": "scram-sha-256" + }, + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "username", + "password" + ] + }, + { + "additionalProperties": false, + "properties": { + "mechanism": { + "const": "scram-sha-512" + }, + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "username", + "password" + ] + } + ] + }, + "cache_server_topics": { + "topics": { + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "defaultOffset": { + "anyOf": [ + { + "type": "string", + "enum": [ + "live", + "historical" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "deltaType": { + "anyOf": [ + { + "type": "string", + "enum": [ + "none", + "json_patch" + ], + "deprecated": true + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "anyOf": [ + { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + }, + "key": { + "$ref": "#/$defs/converter" + }, + "value": { + "$ref": "#/$defs/converter" + } + } + } + } + } + }, + "mqtt": { + "authorization": { + "title": "Authorizations", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Guard", + "type": "object", + "properties": { + "credentials": { + "title": "Credentials", + "type": "object", + "properties": { + "connect": { + "title": "Connect", + "type": "object", + "properties": { + "username": { + "title": "Username", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "password": { + "title": "Password", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "oneOf": [ + { + "required": [ + "username" + ] + }, + { + "required": [ + "password" + ] + } + ] + } + }, + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "connect" + ] + } + ] + } + }, + "additionalProperties": false, + "required": [ + "credentials" + ] + } + }, + "maxProperties": 1 + } + }, + "tcp": { + "properties": { + "host": { + "title": "Host", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "title": "Port", + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + } + ] + } + } + ] + } + }, + "additionalProperties": false + }, + "tls": { + "properties": { + "version": { + "title": "Version", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "keys": { + "title": "Vault Keys", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "trust": { + "title": "Vault Certificates", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "trustcacerts": { + "title": "Trust CA Certificates", + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "sni": { + "title": "Server Names", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "alpn": { + "title": "Application Protocols", + "type": "array", + "items": { + "type": [ + "string", + "null" + ] + } + }, + "mutual": { + "title": "Mutual Authentication", + "anyOf": [ + { + "type": "string", + "enum": [ + "required", + "requested", + "none" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "signers": { + "title": "Vault Signer Certificates", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "catalog": { + "schema-registry": { + "properties": { + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "context": { + "anyOf": [ + { + "type": "string", + "default": "default" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "max-age": { + "title": "Max Age", + "anyOf": [ + { + "type": "number", + "default": 300 + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + }, + "binding": { + "title": "Binding", + "type": "object", + "properties": { + "vault": { + "title": "Vault", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "$ref": "#/$defs/cataloged" + } + } + }, + "maxProperties": 1 + }, + "type": { + "title": "Type", + "anyOf": [ + { + "type": "string", + "enum": [ + "amqp", + "asyncapi", + "echo", + "fan", + "filesystem", + "grpc", + "grpc-kafka", + "http", + "http-filesystem", + "http-kafka", + "kafka", + "kafka-grpc", + "mqtt", + "mqtt-kafka", + "openapi", + "openapi-asyncapi", + "proxy", + "sse", + "sse-kafka", + "tcp", + "tls", + "ws" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "kind": { + "title": "Kind", + "enum": [ + "client", + "server", + "proxy", + "remote_server", + "cache_client", + "cache_server" + ] + }, + "options": { + "title": "Options", + "type": "object" + }, + "routes": { + "title": "Routes", + "type": "array", + "items": { + "title": "Route", + "type": "object", + "properties": { + "exit": { + "title": "Exit", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "when": { + "title": "Conditions", + "type": "array", + "items": { + "title": "Condition", + "type": "object" + } + }, + "with": { + "title": "Override", + "type": "object" + }, + "guarded": { + "title": "Guarded", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "title": "Roles", + "type": "array", + "items": { + "title": "Role", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + } + }, + "additionalProperties": false + } + }, + "telemetry": { + "title": "Telemetry", + "type": "object", + "properties": { + "metrics": { + "type": "array" + } + } + }, + "exit": { + "title": "Exit", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "entry": { + "title": "Entry", + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "type", + "kind" + ], + "anyOf": [ + { + "properties": { + "kind": { + "const": "remote_server" + } + }, + "required": [ + "entry" + ] + }, + { + "properties": { + "kind": { + "not": { + "const": "remote_server" + } + }, + "entry": false + } + } + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "amqp" + } + } + }, + "then": { + "properties": { + "type": { + "const": "amqp" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": false, + "catalog": false, + "entry": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "additionalProperties": false, + "properties": { + "address": { + "title": "Address", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "capabilities": { + "title": "Capabilities", + "anyOf": [ + { + "type": "string", + "enum": [ + "send_only", + "receive_only", + "send_and_receive" + ], + "default": "send_and_receive" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "asyncapi" + } + } + }, + "then": { + "properties": { + "type": { + "const": "asyncapi" + }, + "kind": { + "enum": [ + "server", + "client", + "proxy" + ] + }, + "options": { + "properties": { + "specs": { + "title": "Specifications", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "servers": { + "title": "Servers", + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "title": "URL", + "anyOf": [ + { + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "host": { + "title": "Host", + "anyOf": [ + { + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "pathname": { + "title": "Path Name", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "tcp": { + "$ref": "#/$defs/options/binding/tcp" + }, + "tls": { + "$ref": "#/$defs/options/binding/tls" + }, + "http": { + "title": "Http", + "type": "object", + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/http/authorization" + } + }, + "additionalProperties": false + }, + "mqtt": { + "title": "MQTT", + "type": "object", + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/mqtt/authorization" + } + }, + "additionalProperties": false + }, + "kafka": { + "title": "Kafka", + "type": "object", + "properties": { + "sasl": { + "$ref": "#/$defs/options/binding/kafka/sasl" + }, + "topics": { + "$ref": "#/$defs/options/binding/kafka/cache_server_topics" + } + }, + "additionalProperties": false + }, + "mqtt-kafka": { + "title": "MQTT-Kafka", + "type": "object", + "properties": { + "channels": { + "title": "Channels", + "type": "object", + "properties": { + "sessions": { + "title": "Kafka Sessions Channel", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "messages": { + "title": "Kafka Messages Channel", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "retained": { + "title": "Kafka Retained Channel", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "additionalProperties": false + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "additionalProperties": false, + "properties": { + "api-id": { + "title": "Spec API Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "operation-id": { + "title": "MQTT Operation Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "with": { + "properties": { + "api-id": { + "title": "Spec API Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "operation-id": { + "title": "MQTT Operation Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + } + } + }, + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] + } + }, + "required": [ + "routes" + ] + } + ] + }, + { + "properties": { + "kind": { + "const": "proxy" + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] + } + }, + "required": [ + "routes" + ] + } + ] + }, + { + "properties": { + "kind": { + "const": "client" + }, + "routes": { + "items": { + "properties": { + "exit": false + } + } + }, + "exit": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "echo" + } + } + }, + "then": { + "properties": { + "type": { + "const": "echo" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": false, + "routes": false, + "exit": false + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "fan" + } + } + }, + "then": { + "properties": { + "type": { + "const": "fan" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": false, + "routes": false + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "filesystem" + } + } + }, + "then": { + "properties": { + "type": { + "const": "filesystem" + }, + "kind": { + "enum": [ + "server" + ] + }, + "vault": false, + "options": { + "properties": { + "location": { + "title": "Location", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "symlinks": { + "title": "Symbolic Links", + "anyOf": [ + { + "type": "string", + "enum": [ + "follow", + "ignore" + ], + "default": "ignore" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + }, + "routes": false, + "exit": false + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "grpc" + } + } + }, + "then": { + "properties": { + "type": { + "const": "grpc" + }, + "kind": { + "enum": [ + "server", + "client" + ] + }, + "vault": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "method": { + "title": "Method", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "metadata": { + "title": "Metadata", + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "type": "object", + "properties": { + "base64": { + "title": "Base64 value", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + ] + } + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + }, + "options": { + "properties": { + "services": { + "title": "Services", + "type": "array", + "items": { + "title": "Service", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "deprecated": true + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "grpc-kafka" + } + } + }, + "then": { + "properties": { + "type": { + "const": "grpc-kafka" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": { + "properties": { + "reliability": { + "title": "Reliability", + "type": "object", + "properties": { + "field": { + "title": "Grpc Last Message Id", + "anyOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 536870911, + "default": 32767 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "metadata": { + "title": "Grpc Last Message Id Metadata Name", + "anyOf": [ + { + "type": "string", + "default": "last-message-id" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "idempotency": { + "title": "Idempotency", + "type": "object", + "properties": { + "metadata": { + "title": "Idempotency Metadata name", + "anyOf": [ + { + "type": "string", + "default": "idempotency-key" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "correlation": { + "title": "Correlation", + "type": "object", + "properties": { + "headers": { + "title": "Correlation Kafka Headers", + "type": "object", + "properties": { + "service": { + "title": "Grpc Service Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:service" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "method": { + "title": "Grpc Method Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:method" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "correlation-id": { + "title": "Correlation-Id Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:correlation-id" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "reply-to": { + "title": "Reply to Topic", + "anyOf": [ + { + "type": "string", + "default": "zilla:reply-to" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "required": [ + "headers" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "method": { + "title": "Method", + "anyOf": [ + { + "type": "string", + "pattern": "^(?[^/]+)/(?[^/]+)" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "metadata": { + "title": "Metadata", + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "type": "object", + "properties": { + "base64": { + "title": "Base64 value", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + ] + } + } + }, + "additionalProperties": false + } + }, + "with": { + "oneOf": [ + { + "properties": { + "capability": { + "title": "Capability", + "anyOf": [ + { + "type": "string", + "const": "fetch" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "properties": { + "key": { + "title": "Key", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + { + "properties": { + "capability": { + "title": "Capability", + "anyOf": [ + { + "type": "string", + "const": "produce" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "acks": { + "title": "Acks", + "anyOf": [ + { + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "key": { + "title": "Key", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "overrides": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "reply-to": { + "title": "Reply-To topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "reply-to" + ] + } + ], + "required": [ + "capability", + "topic" + ] + } + }, + "required": [ + "with" + ] + } + }, + "exit": false + }, + "required": [ + "routes" + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "http" + } + } + }, + "then": { + "properties": { + "type": { + "const": "http" + }, + "kind": { + "enum": [ + "server", + "client" + ] + }, + "vault": false, + "options": { + "properties": { + "versions": { + "title": "Versions", + "type": "array", + "default": [ + "http/1.1", + "h2" + ], + "items": { + "title": "Version", + "anyOf": [ + { + "type": "string", + "enum": [ + "http/1.1", + "h2" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "access-control": { + "title": "Access Control", + "type": "object", + "properties": { + "policy": { + "title": "Policy", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "oneOf": [ + { + "properties": { + "policy": { + "const": "same-origin" + } + } + }, + { + "properties": { + "policy": { + "const": "cross-origin" + }, + "allow": { + "title": "Allow", + "type": "object", + "properties": { + "origins": { + "title": "Origins", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "methods": { + "title": "Methods", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "headers": { + "title": "Headers", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "credentials": { + "title": "Credentials", + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + }, + "max-age": { + "title": "Max Age", + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "expose": { + "title": "Expose", + "type": "object", + "properties": { + "headers": { + "title": "Headers", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "authorization": { + "$ref": "#/$defs/options/binding/http/authorization" + }, + "overrides": { + "title": "Overrides", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "requests": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "method": { + "anyOf": [ + { + "type": "string", + "enum": [ + "GET", + "PUT", + "POST", + "DELETE", + "OPTIONS", + "HEAD", + "PATCH", + "TRACE" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "content-type": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/validator" + } + } + }, + "params": { + "type": "object", + "properties": { + "path": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/validator" + } + } + }, + "query": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/validator" + } + } + } + }, + "additionalProperties": false + }, + "content": { + "$ref": "#/$defs/validator" + }, + "responses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "status": { + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + ] + }, + "content-type": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/validator" + } + } + }, + "content": { + "$ref": "#/$defs/validator" + } + }, + "anyOf": [ + { + "required": [ + "content" + ] + }, + { + "required": [ + "headers" + ] + } + ], + "additionalProperties": false + } + } + }, + "anyOf": [ + { + "required": [ + "path", + "headers" + ] + }, + { + "required": [ + "path", + "params" + ] + }, + { + "required": [ + "path", + "content" + ] + }, + { + "required": [ + "path", + "responses" + ] + } + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "properties": { + "access-control": false, + "authorization": false + } + } + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "http-filesystem" + } + } + }, + "then": { + "properties": { + "type": { + "const": "http-filesystem" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": { + "properties": { + "path": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "path" + ] + } + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "http-kafka" + } + } + }, + "then": { + "properties": { + "type": { + "const": "http-kafka" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": { + "properties": { + "idempotency": { + "title": "Idempotency", + "type": "object", + "properties": { + "header": { + "title": "Idempotency Key HTTP Header", + "anyOf": [ + { + "type": "string", + "default": "idempotency-key" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "header" + ], + "additionalProperties": false + }, + "correlation": { + "title": "Correlation", + "type": "object", + "properties": { + "headers": { + "title": "Correlation Kafka Headers", + "type": "object", + "properties": { + "reply-to": { + "title": "Reply-To Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:reply-to" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "correlation-id": { + "title": "Correlation-Id Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:correlation-id" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "required": [ + "headers" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "method": { + "title": "Method", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": { + "oneOf": [ + { + "properties": { + "capability": { + "title": "Capability", + "anyOf": [ + { + "type": "string", + "const": "fetch" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "properties": { + "key": { + "title": "Key", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "merge": { + "title": "Merge", + "type": "object", + "properties": { + "content-type": { + "title": "Content Type", + "anyOf": [ + { + "type": "string", + "const": "application/json" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "patch": { + "title": "Patch", + "type": "object", + "properties": { + "initial": { + "title": "Initial Value", + "anyOf": [ + { + "type": "string", + "const": "[]" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string", + "const": "/-" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "initial", + "path" + ], + "additionalProperties": false + } + }, + "required": [ + "content-type" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "properties": { + "capability": { + "title": "Capability", + "anyOf": [ + { + "type": "string", + "const": "produce" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "acks": { + "title": "Acks", + "anyOf": [ + { + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "key": { + "title": "Key", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "overrides": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "reply-to": { + "title": "Reply-To", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "async": { + "title": "Async", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false, + "dependentRequired": { + "async": [ + "reply-to" + ] + } + } + ], + "required": [ + "capability", + "topic" + ] + } + }, + "required": [ + "with" + ] + } + }, + "exit": false + }, + "required": [ + "routes" + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "kafka" + } + } + }, + "then": { + "properties": { + "type": { + "const": "kafka" + }, + "kind": { + "enum": [ + "cache_client", + "cache_server", + "client" + ] + }, + "vault": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "groupId": { + "title": "groupId", + "anyOf": [ + { + "type": "string", + "deprecated": true + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "cache_client" + }, + "options": { + "properties": { + "topics": { + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "key": { + "$ref": "#/$defs/converter" + }, + "value": { + "$ref": "#/$defs/converter" + } + } + } + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "cache_server" + }, + "options": { + "properties": { + "bootstrap": { + "title": "Bootstrap", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "topics": { + "$ref": "#/$defs/options/binding/kafka/cache_server_topics" + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "properties": { + "servers": { + "title": "Servers", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "pattern": "([^\\:]+):(\\d+)" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "sasl": { + "$ref": "#/$defs/options/binding/kafka/sasl" + } + }, + "additionalProperties": false + } + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "kafka-grpc" + } + } + }, + "then": { + "properties": { + "type": { + "const": "kafka-grpc" + }, + "kind": { + "enum": [ + "remote_server" + ] + }, + "vault": false, + "options": { + "properties": { + "acks": { + "title": "Acks", + "anyOf": [ + { + "type": "string", + "enum": [ + "none", + "leader_only", + "in_sync_replicas" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "idempotency": { + "title": "Idempotency", + "type": "object", + "properties": { + "metadata": { + "title": "Idempotency Metadata name", + "anyOf": [ + { + "type": "string", + "default": "idempotency-key" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "correlation": { + "title": "Correlation", + "type": "object", + "properties": { + "headers": { + "title": "Correlation Kafka Headers", + "type": "object", + "properties": { + "service": { + "title": "Grpc Service Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:service" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "method": { + "title": "Grpc Method Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:method" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "correlation-id": { + "title": "Correlation-Id Kafka Header", + "anyOf": [ + { + "type": "string", + "default": "zilla:correlation-id" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "reply-to": { + "title": "Reply to Topic", + "anyOf": [ + { + "type": "string", + "default": "zilla:reply-to" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "key": { + "title": "Key", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "reply-to": { + "title": "ReplyTo", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "method": { + "title": "Method", + "anyOf": [ + { + "type": "string", + "pattern": "^(?[^/]+)/(?[^/]+)" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "topic", + "reply-to" + ] + } + }, + "with": { + "properties": { + "scheme": { + "title": "Scheme", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "scheme", + "authority" + ] + } + }, + "required": [ + "with" + ] + } + }, + "exit": false + }, + "required": [ + "routes" + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "mqtt" + } + } + }, + "then": { + "properties": { + "type": { + "const": "mqtt" + }, + "kind": { + "enum": [ + "server", + "client" + ] + }, + "vault": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "additionalProperties": false, + "properties": { + "session": { + "title": "Session", + "type": "array", + "items": { + "client-id": { + "title": "Client Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "subscribe": { + "title": "Subscribe", + "type": "array", + "items": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "publish": { + "title": "Subscribe", + "type": "array", + "items": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + } + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + }, + "options": { + "properties": { + "versions": { + "title": "Versions", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "enum": [ + "v3.1.1", + "v5" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "authorization": { + "$ref": "#/$defs/options/binding/mqtt/authorization" + }, + "topics": { + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "content": { + "$ref": "#/$defs/validator" + }, + "user-properties": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "$ref": "#/$defs/validator" + } + } + } + } + } + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/mqtt/authorization" + } + }, + "additionalProperties": false + } + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "mqtt-kafka" + } + } + }, + "then": { + "properties": { + "type": { + "const": "mqtt-kafka" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": { + "properties": { + "server": { + "title": "Server Reference", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "topics": { + "title": "Topics", + "type": "object", + "properties": { + "sessions": { + "title": "Kafka Sessions Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "messages": { + "title": "Kafka Messages Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "retained": { + "title": "Kafka Retained Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "additionalProperties": false + }, + "required": [ + "sessions", + "retained", + "messages" + ], + "additionalProperties": false + }, + "clients": { + "title": "Clients", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "publish": { + "title": "Publish", + "type": "object", + "properties": { + "qosMax": { + "title": "Maximum QoS", + "anyOf": [ + { + "type": "string", + "enum": [ + "at_most_once", + "at_least_once", + "exactly_once" + ], + "default": "exactly_once" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "additionalProperties": false + }, + "required": [ + "qosMax" + ], + "additionalProperties": false + } + }, + "required": [ + "topics" + ], + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "anyOf": [ + { + "properties": { + "subscribe": { + "title": "Subscribe", + "type": "array", + "items": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + } + }, + { + "properties": { + "publish": { + "title": "Publish", + "type": "array", + "items": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + } + } + ] + } + }, + "with": { + "properties": { + "messages": { + "title": "Messages Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "required": [ + "with" + ] + } + } + }, + "required": [ + "options" + ], + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "openapi" + } + } + }, + "then": { + "properties": { + "type": { + "const": "openapi" + }, + "kind": { + "enum": [ + "client", + "server" + ] + }, + "options": { + "properties": { + "tcp": { + "$ref": "#/$defs/options/binding/tcp" + }, + "tls": { + "$ref": "#/$defs/options/binding/tls" + }, + "http": { + "title": "Http", + "type": "object", + "properties": { + "authorization": { + "$ref": "#/$defs/options/binding/http/authorization" + } + }, + "additionalProperties": false + }, + "specs": { + "title": "Specs", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "servers": { + "title": "Servers", + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "title": "URL", + "anyOf": [ + { + "type": "string", + "pattern": "^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + } + } + }, + "additionalProperties": false + }, + "routes": false + }, + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] + } + }, + "required": [ + "routes" + ] + } + ] + }, + { + "properties": { + "kind": { + "const": "client" + }, + "routes": { + "items": { + "properties": { + "exit": false + } + } + }, + "exit": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "openapi-asyncapi" + } + } + }, + "then": { + "properties": { + "type": { + "const": "openapi-asyncapi" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": { + "properties": { + "specs": { + "title": "Specs", + "type": "object", + "properties": { + "openapi": { + "title": "Openapi", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + } + }, + "asyncapi": { + "title": "Asyncapi", + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + } + } + }, + "required": [ + "openapi", + "asyncapi" + ] + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "api-id": { + "title": "ApiId", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "operation-id": { + "title": "OperationId", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": { + "properties": { + "api-id": { + "title": "ApiId", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "operation-id": { + "title": "OperationId", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "required": [ + "with" + ] + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "proxy" + } + } + }, + "then": { + "properties": { + "type": { + "const": "proxy" + }, + "kind": { + "enum": [ + "client", + "server" + ] + }, + "vault": false, + "options": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "additionalProperties": false, + "properties": { + "transport": { + "title": "Transport", + "anyOf": [ + { + "type": "string", + "enum": [ + "stream", + "datagram" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "family": { + "title": "Family", + "anyOf": [ + { + "type": "string", + "enum": [ + "inet", + "inet4", + "inet6", + "unix" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "source": { + "title": "Source", + "type": "object", + "additionalProperties": false, + "properties": { + "host": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "destination": { + "title": "Source", + "type": "object", + "additionalProperties": false, + "properties": { + "host": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "info": { + "title": "Info", + "type": "object", + "additionalProperties": false, + "properties": { + "alpn": { + "title": "Application Protocol", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "identity": { + "title": "Identity", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "namespace": { + "title": "Namespace", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "secure": { + "title": "Secure", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "title": "Protocol Version", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "cipher": { + "title": "Cipher Name", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "key": { + "title": "Key Algorithm", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "name": { + "title": "Common Name", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "signature": { + "title": "Signature Algorithm", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + } + } + } + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "sse" + } + } + }, + "then": { + "properties": { + "type": { + "const": "sse" + }, + "kind": { + "enum": [ + "client", + "server" + ] + }, + "vault": false, + "options": { + "properties": { + "retry": { + "anyOf": [ + { + "type": "integer", + "default": 2000 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "requests": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "content": { + "$ref": "#/$defs/validator" + } + }, + "anyOf": [ + { + "required": [ + "path", + "content" + ] + } + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "sse-kafka" + } + } + }, + "then": { + "properties": { + "type": { + "const": "sse-kafka" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": { + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "filters": { + "title": "Filters", + "type": "array", + "items": { + "properties": { + "key": { + "title": "Key", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "headers": { + "title": "Headers", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "event": { + "properties": { + "id": { + "title": "Id", + "anyOf": [ + { + "type": "string", + "enum": [ + "${etag}", + "[\"${base64(key)}\",\"${etag}\"]" + ], + "default": "${etag}" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "additionalProperties": false, + "required": [ + "topic" + ] + } + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "tcp" + } + } + }, + "then": { + "properties": { + "type": { + "const": "tcp" + }, + "kind": { + "enum": [ + "server", + "client" + ] + }, + "vault": false, + "options": { + "$ref": "#/$defs/options/binding/tcp" + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "cidr": { + "title": "CIDR Mask", + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-fA-F:.]+/(\\d{1,3})$" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "title": "Port", + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + } + ] + } + } + ] + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "oneOf": [ + { + "properties": { + "kind": { + "const": "server" + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] + } + }, + "required": [ + "routes" + ] + } + ] + }, + { + "properties": { + "kind": { + "const": "client" + }, + "routes": { + "items": { + "properties": { + "exit": false + } + } + }, + "exit": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "tls" + } + } + }, + "then": { + "properties": { + "type": { + "const": "tls" + }, + "kind": { + "enum": [ + "client", + "server", + "proxy" + ] + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "alpn": { + "title": "Application Protocol", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "title": "Port", + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + } + ] + } + } + ] + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "$ref": "#/$defs/options/binding/tls" + } + } + }, + { + "properties": { + "kind": { + "const": "server" + }, + "options": { + "$ref": "#/$defs/options/binding/tls" + } + } + }, + { + "properties": { + "kind": { + "const": "proxy" + }, + "options": false + } + } + ] + } + }, + { + "if": { + "properties": { + "type": { + "const": "ws" + } + } + }, + "then": { + "properties": { + "type": { + "const": "ws" + }, + "kind": { + "enum": [ + "client", + "server" + ] + }, + "vault": false, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "properties": { + "protocol": { + "title": "Subprotocol", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "scheme": { + "title": "Scheme", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + "with": false + } + } + } + }, + "anyOf": [ + { + "required": [ + "exit" + ] + }, + { + "required": [ + "routes" + ] + } + ], + "oneOf": [ + { + "properties": { + "kind": { + "const": "client" + }, + "options": { + "properties": { + "defaults": { + "title": "Defaults", + "type": "object", + "additionalProperties": false, + "properties": { + "protocol": { + "title": "Subprotocol", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "scheme": { + "title": "Scheme", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "authority": { + "title": "Authority", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "path": { + "title": "Path", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + }, + "additionalProperties": false + } + } + }, + { + "properties": { + "kind": { + "const": "server" + }, + "options": false + } + } + ] + } + } + ] + }, + "converter": { + "oneOf": [ + { + "$ref": "#/$defs/converter/types" + }, + { + "$ref": "#/$defs/converter/model" + } + ], + "types": { + "anyOf": [ + { + "type": "string", + "enum": [ + "avro", + "double", + "float", + "int32", + "int64", + "json", + "protobuf", + "string" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "model": { + "type": "object", + "properties": { + "model": { + "$ref": "#/$defs/converter/types" + } + }, + "required": [ + "model" + ], + "allOf": [ + { + "if": { + "properties": { + "model": { + "const": "avro" + } + } + }, + "then": { + "properties": { + "model": { + "const": "avro" + }, + "view": { + "anyOf": [ + { + "type": "string", + "enum": [ + "json" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "strategy" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + } + ] + } + } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "double" + } + } + }, + "then": { + "properties": { + "model": { + "const": "double" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "float" + } + } + }, + "then": { + "properties": { + "model": { + "const": "float" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "int32" + } + } + }, + "then": { + "properties": { + "model": { + "const": "int32" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "int64" + } + } + }, + "then": { + "properties": { + "model": { + "const": "int64" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "json" + } + } + }, + "then": { + "properties": { + "model": { + "const": "json" + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "strategy" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + } + ] + } + } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "protobuf" + } + } + }, + "then": { + "properties": { + "model": { + "const": "protobuf" + }, + "view": { + "anyOf": [ + { + "type": "string", + "enum": [ + "json" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "id", + "record" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema", + "record" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "strategy", + "record" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "record": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject", + "record" + ], + "additionalProperties": false + } + ] + } + } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "string" + } + } + }, + "then": { + "properties": { + "model": { + "const": "string" + }, + "encoding": { + "anyOf": [ + { + "type": "string", + "enum": [ + "utf_8", + "utf_16" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "minLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "maxLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + ] + } + }, + "validator": { + "oneOf": [ + { + "$ref": "#/$defs/validator/types" + }, + { + "$ref": "#/$defs/validator/model" + } + ], + "types": { + "anyOf": [ + { + "type": "string", + "enum": [ + "double", + "float", + "int32", + "int64", + "json", + "string" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "model": { + "type": "object", + "properties": { + "model": { + "$ref": "#/$defs/validator/types" + } + }, + "required": [ + "model" + ], + "allOf": [ + { + "if": { + "properties": { + "model": { + "const": "double" + } + } + }, + "then": { + "properties": { + "model": { + "const": "double" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "float" + } + } + }, + "then": { + "properties": { + "model": { + "const": "float" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "int32" + } + } + }, + "then": { + "properties": { + "model": { + "const": "int32" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "int64" + } + } + }, + "then": { + "properties": { + "model": { + "const": "int64" + }, + "format": { + "anyOf": [ + { + "type": "string", + "enum": [ + "binary", + "text" + ], + "default": "text" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "range": { + "anyOf": [ + { + "type": "string", + "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "multiple": { + "anyOf": [ + { + "type": "number" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "json" + } + } + }, + "then": { + "properties": { + "model": { + "const": "json" + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "schema" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "strategy": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "strategy" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + } + ] + } + } + }, + "maxProperties": 1 + } + }, + "required": [ + "catalog" + ], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "model": { + "const": "string" + } + } + }, + "then": { + "properties": { + "model": { + "const": "string" + }, + "encoding": { + "anyOf": [ + { + "type": "string", + "enum": [ + "utf_8" + ] + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "minLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "maxLength": { + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "pattern": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + ] + } + } + } +} diff --git a/src/how-tos/grpc/grpc.route-guide.service.md b/src/how-tos/grpc/grpc.route-guide.service.md index d827fc9c..65dd570e 100644 --- a/src/how-tos/grpc/grpc.route-guide.service.md +++ b/src/how-tos/grpc/grpc.route-guide.service.md @@ -39,9 +39,9 @@ Here is the simplest configuration for declaring the gRPC service. There is a `s grpc_server: type: grpc kind: server - options: - services: - - route_guide.proto + catalog: + host_filesystem: + - subject: route_guide routes: - when: - method: routeguide.RouteGuide/* diff --git a/src/how-tos/telemetry/opentelemetry-protocol.md b/src/how-tos/telemetry/opentelemetry-protocol.md index cbab989a..08c5a05b 100644 --- a/src/how-tos/telemetry/opentelemetry-protocol.md +++ b/src/how-tos/telemetry/opentelemetry-protocol.md @@ -62,7 +62,7 @@ telemetry: - stream.closes.received - stream.closes.sent - # Prometheus endpoint definition + # Open Telemetry exporter definition exporters: otel_exporter_otlp: type: otlp @@ -150,7 +150,6 @@ bindings: telemetry: metrics: - stream.* - ``` @tab docker-compose.yaml @@ -228,12 +227,12 @@ United States*98109*leWA" LS4PSXUNUM -USD9����* +USD9����* 2ZYFJ3GM2N -USD�����* +USD�����* 66VCHSJNUP @@ -244,7 +243,7 @@ United States*95014* CupertinoCA" L9ECAV7KIM -USD����* +USD����* 66VCHSJNUP diff --git a/src/reference/config/bindings/binding-amqp.md b/src/reference/config/bindings/binding-amqp.md index 00f27ec8..a3459ef2 100644 --- a/src/reference/config/bindings/binding-amqp.md +++ b/src/reference/config/bindings/binding-amqp.md @@ -15,51 +15,29 @@ Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enabl Zilla runtime amqp binding. -```yaml {2} -amqp_server: - type: amqp - kind: server - routes: - - when: - - address: echo - capabilities: send_and_receive - exit: echo_server -``` - -## Summary - -Defines a binding with `amqp 1.0` protocol support, with `server` behavior. - -The `server` kind `amqp` binding decodes `amqp 1.0` protocol on the inbound network stream, producing higher level application streams for each `send` or `receive` `link`. - -Conditional routes based on the `link` `address` are used to route these application streams to an `exit` binding. - ## Configuration -:::: note Properties - -- [kind\*](#kind) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].address](#when-address) - - [when\[\].capabilities](#when-capabilities) -- [routes\[\].exit\*](#routes-exit) - ::: right \* required ::: -:::: +### type: amqp\* -### kind\* +Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. -> `enum` [ "server" ] +### kind: server\* -Behave as an `amqp 1.0` `proxy`. +The `server` kind `amqp` binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. -```yaml -kind: proxy +```yaml {2} +amqp_server: + type: amqp + kind: server + routes: + - when: + - address: echo + capabilities: send_and_receive + exit: echo_server ``` ### exit @@ -76,7 +54,7 @@ exit: echo_server > `array` of `object` -Conditional `amqp`-specific routes for adapting `http` request-response streams to `kafka` topic streams. +Conditional `amqp`-specific routes for adapting HTTP request-response streams to Kafka topic streams. ```yaml routes: @@ -86,7 +64,7 @@ routes: exit: echo_server ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -99,7 +77,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -113,19 +91,19 @@ routes: capabilities: send_and_receive ``` -#### when[].address +##### when[].address > `string` Link address. -#### when[].capabilities +##### when[].capabilities > `enum` [ "send_only", "receive_only", "send_and_receive" ] | Default: `"send_and_receive"` Send or receive, or both. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -138,6 +116,24 @@ routes: exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-asyncapi.md b/src/reference/config/bindings/binding-asyncapi.md index 9ba34647..ed1951d4 100644 --- a/src/reference/config/bindings/binding-asyncapi.md +++ b/src/reference/config/bindings/binding-asyncapi.md @@ -13,9 +13,7 @@ tag: Zilla runtime `asyncapi` binding. -```yaml {2} -name: zilla-mqtt-kafka-broker -bindings: +```yaml {2,9,46} asyncapi_server: type: asyncapi kind: server @@ -76,77 +74,25 @@ bindings: - 9092 ``` -## Summary +## Configuration (\* required) -Defines a binding with `asyncapi` spec, with `server` or `proxy` or `client` behavior. -The `server` kind `asyncapi` binding creates composite of `tcp`, `tls`, and `mqtt` or `http` bindings with server kind and adapts MQTT/HTTP streams to AsyncAPI streams. +### type: asyncapi\* -The `proxy` kind `asyncapi` binding creates composite of `mqtt-kafka` binding with proxy kind mapping MQTT streams to Kafka streams. +Defines a binding with `asyncapi` spec, with `server` or `proxy` or `client` behavior. -The `client` kind `asyncapi` binding creates composite of `kafka` or `mqtt` or `http`, and `tls`, `tcp` bindings with client kind and adapts AsyncAPI streams to Kafka/MQTT/HTTP streams. - -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.specs](#options-specs) - - [specs.catalog](#specs-catalog) - - [catalog.subject](#catalog-subject) - - [catalog.version](#catalog-version) - - [specs.servers](#specs-servers) - - [servers.url](#servers-url) - - [servers.host](#servers-host) - - [servers.pathname](#servers-pathname) - - [options.tcp](#options-tcp) - - [tpc.host](#tpc-host) - - [tcp.port](#tcp-port) - - [options.http](#options-http) - - [http.authorization](#http-authorization) - - [authorization.credentials](#authorization-credentials) - - [credentials.cookies](#credentials-cookies) - - [credentials.headers](#credentials-headers) - - [credentials.query](#credentials-query) - - [options.tls](#options-tls) - - [tls.version](#tls-version) - - [tls.keys](#tls-keys) - - [tls.trust](#tls-trust) - - [tls.signers](#tls-signers) - - [tls.trustcacerts](#tls-trustcacerts) - - [tls.sni\*](#tls-sni) - - [tls.alpn](#tls-alpn) - - [tls.mutual](#tls-mutual) -- [mqtt-kafka](#mqtt-kafka) - - [mqtt-kafka.channels](#mqtt-kafka-channels) - - [channels.sessions](#channels-sessions) - - [channels.retained](#channels-retained) - - [channels.messages](#channels-messages) -- [routes\[\].when](#routes-when) - - [when\[\].api-id](#when-api-id) - - [when\[\].operation-id](#when-operation-id) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with](#routes-with) - - [with.api-id](#with-api-id) - - [with.operation-id](#with-operation-id) -- [exit](#exit) +### kind: client -::: right -\* required -::: - -:::: +The `client` kind `asyncapi` binding creates composite of `kafka` or `mqtt` or `http`, and `tls`, `tcp` bindings with client kind and adapts +AsyncAPI streams to Kafka/MQTT/HTTP streams. -### kind\* +### kind: proxy -> `enum` [ "client", "proxy", "server" ] +The `proxy` kind `asyncapi` binding creates composite of `mqtt-kafka` binding with proxy kind mapping MQTT streams to Kafka streams. -Behave as a `asyncapi` `client` or `proxy` or `server`. +### kind: server -```yaml -kind: server -``` +The `server` kind `asyncapi` binding creates composite of `tcp`, `tls`, and `mqtt` or `http` bindings with server kind and adapts MQTT/HTTP streams to AsyncAPI streams. ### options @@ -217,7 +163,7 @@ The server pathname to match based on the server's `pathname` in an asyncapi `3. `client` specific `tcp` options. -##### tpc.host +##### tcp.host > `string` @@ -377,26 +323,26 @@ AsyncAPI Kafka messages channel. messages: mqttMessages ``` -### routes[].when +#### routes[].when > `array` of `object` List of conditions to match this route when adapting `asyncapi` MQTT streams to `asyncapi` Kafka streams. Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) -#### when[].api-id +##### when[].api-id > `string` AsyncAPI spec identifier that matches from `asyncapi` binding MQTT stream. -#### when[].operation-id +##### when[].operation-id > `string` AsyncAPI OperationId that can be mapped between AsyncAPI MQTT and AsyncAPI Kafka spec -### routes[].exit\* +#### routes[].exit\* > `string` @@ -409,7 +355,7 @@ routes: exit: asyncapi_client ``` -### routes[].with +#### routes[].with > `object` @@ -420,13 +366,13 @@ with: api-id: my-asyncapi-spec ``` -#### with.api-id +##### with.api-id > `string` AsyncAPI spec identifier that the route exits with to the next binding -#### with.operation-id +##### with.operation-id > `string` @@ -442,6 +388,24 @@ Default exit binding. exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-echo.md b/src/reference/config/bindings/binding-echo.md index 3c988795..c71bba6a 100644 --- a/src/reference/config/bindings/binding-echo.md +++ b/src/reference/config/bindings/binding-echo.md @@ -17,30 +17,32 @@ echo_server: kind: server ``` -## Summary +## Configuration (\* required) + +### type: echo This binding supports the `echo` protocol and is run with the `server` behavior. It reads inbound messages and writes it back to the sender. -## Configuration +### kind: server -:::: note Properties +Behaves as an `echo` `server`. -- [kind\*](#kind) +### telemetry -::: right -\* required -::: +> `object` -:::: +Defines the desired telemetry for the binding. -### kind\* +#### telemetry.metrics -> `enum` [ "server" ] +> `enum` [ "stream" ] -Behaves as an `echo` `server`. +Telemetry metrics to track ```yaml -kind: server +telemetry: + metrics: + - stream.* ``` --- diff --git a/src/reference/config/bindings/binding-fan.md b/src/reference/config/bindings/binding-fan.md index c7805906..4bff6273 100644 --- a/src/reference/config/bindings/binding-fan.md +++ b/src/reference/config/bindings/binding-fan.md @@ -18,41 +18,42 @@ fan_server: exit: echo_server ``` -## Summary +## Configuration (\* required) -Defines a binding with `fan-in` and `fan-out` support, with `server` behavior. +### type: fan\* -The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. +Defines a binding with `fan-in` and `fan-out` support, with `server` behavior. -When the `exit` is an `echo` server binding, the combination reflects all inbound data from each client to all clients. +### kind: server\* -## Configuration +Behave as an `fan-in` and `fan-out` `server`. The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. -:::: note Properties +### exit\* -- [kind\*](#kind) -- [exit\*](#exit) +> `string` -::: right -\* required -::: +Default exit binding. When the `exit` is an `echo` server binding, the combination reflects all inbound data from each client to all clients. -:::: +```yaml +exit: echo_server +``` -### kind\* +### telemetry -> `enum` [ "server" ] +> `object` -Behave as an `fan-in` and `fan-out` `server`. +Defines the desired telemetry for the binding. -### exit\* +#### telemetry.metrics -> `string` +> `enum` [ "stream" ] -Default exit binding. +Telemetry metrics to track ```yaml -exit: echo_server +telemetry: + metrics: + - stream.* ``` --- diff --git a/src/reference/config/bindings/binding-filesystem.md b/src/reference/config/bindings/binding-filesystem.md index 930cfbc3..9695b4f1 100644 --- a/src/reference/config/bindings/binding-filesystem.md +++ b/src/reference/config/bindings/binding-filesystem.md @@ -20,37 +20,18 @@ filesystem_server: simlinks: follow ``` -## Summary +## Configuration (\* required) + +### type: filesystem\* The `server` kind `filesystem` binding provides access to files and directories on the local filesystem, optionally following symbolic links. Behaves as a web server when combined with `tcp,` `tls`, `http` and `http-filesystem` bindings. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.location](#options-location) - - [options.symlinks](#options-symlinks) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "server" ] +### kind: server\* Behave as a `filesystem` `server`. -```yaml -kind: server -``` - ### options > `object` @@ -75,6 +56,24 @@ File system URI or directory name with trailing slash. How to treat symbolic links. +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-grpc-kafka.md b/src/reference/config/bindings/binding-grpc-kafka.md index 1729e988..b14f8f9e 100644 --- a/src/reference/config/bindings/binding-grpc-kafka.md +++ b/src/reference/config/bindings/binding-grpc-kafka.md @@ -9,8 +9,6 @@ tag: # grpc-kafka Binding - - Zilla runtime grpc-kafka binding. ```yaml {2} @@ -61,77 +59,16 @@ grpc_kafka_proxy: reply-to: responses ``` -## Summary - -The `proxy` kind `grpc-kafka` binding adapts `grpc` request-response streams to `kafka` topic streams. - -## Fetch capability - -Routes with `fetch` capability map `grpc` `Empty` requests to a `kafka` topic, supporting filtered retrieval of messages with a specific key or headers, or unfiltered retrieval of all messages in the topic merged into a unified response. - -Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers. - -Reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the `grpc` client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new `grpc` request. - -## Produce capability +## Configuration (\* required) -Routes with `produce` capability map any `grpc` request-response to a correlated stream of `kafka` messages. The `grpc` request message(s) are sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message(s) are received and processed by the `kafka` `requests` topic consumer, it produces response message(s) to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. - -Requests including an `idempotency-key` `grpc` metadata header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. +### type: grpc-kafka\* -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.idempotency](#options-idempotency) - - [idempotency.metadata](#idempotency-metadata) - - [options.reliability](#options-reliability) - - [reliability.field](#reliability-field) - - [reliability.metadata](#reliability-metadata) - - [options.correlation](#options-correlation) - - [correlation.headers](#correlation-headers) - - [headers.service](#headers-service) - - [headers.method](#headers-method) - - [headers.correlation-id](#headers-correlation-id) - - [headers.reply-to](#headers-reply-to) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].method](#when-method) - - [when\[\].metadata](#when-metadata) - - [metadata.base64](#metadata-base64) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with\*](#routes-with) -- [with.capability: fetch](#with-capability-fetch) - - [with.topic](#with-topic) - - [with.filters](#with-filters) - - [filters\[\].key](#filters-key) - - [filters\[\].headers](#filters-headers) -- [with.capability: produce](#with-capability-produce) - - [with.topic](#with-topic-1) - - [with.acks](#with-acks) - - [with.key](#with-key) - - [with.overrides](#with-overrides) - - [with.reply-to](#with-reply-to) - -::: right -\* required -::: - -:::: - -### kind\* +The `proxy` kind `grpc-kafka` binding adapts `grpc` request-response streams to `kafka` topic streams. -> `enum` [ "proxy" ] +### kind: proxy\* Behave as an `grpc-kafka` `proxy`. -```yaml -kind: proxy -``` - ### options > `object` @@ -264,7 +201,7 @@ routes: reply-to: responses ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -277,7 +214,7 @@ routes: - read:messages ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -294,13 +231,13 @@ routes: base64: Y3VzdG9tIHZhbHVl ``` -#### when[].method +##### when[].method > `string` Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. -#### when[].metadata +##### when[].metadata > `map` of `name: value` properties @@ -314,7 +251,7 @@ Each metadata header value can be `string` or `object` with `base64` property. Base64 encoded value for binary metadata header. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -327,7 +264,7 @@ routes: exit: kafka_cache_client ``` -### routes[].with\* +#### routes[].with\* > **oneOf**: [fetch](#with-capability-fetch) | [produce](#with-capability-produce) @@ -345,12 +282,18 @@ with: capability: produce ``` -### with.capability: fetch +#### with.capability: fetch > `object` Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. +Routes with `fetch` capability map `grpc` `Empty` requests to a `kafka` topic, supporting filtered retrieval of messages with a specific key or headers, or unfiltered retrieval of all messages in the topic merged into a unified response. + +Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers. + +Reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the `grpc` client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new `grpc` request. + ```yaml with: capability: fetch @@ -361,13 +304,13 @@ with: custom-text: custom-value ``` -#### with.topic +##### with.topic > `string` The name of a Kafka topic. -#### with.filters +##### with.filters > `array` of `object` @@ -385,12 +328,16 @@ The filter criteria for the Kafka message key. The filter criteria for the Kafka message headers. -### with.capability: produce +#### with.capability: produce > `object` Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic produce streams. +Routes with `produce` capability map any `grpc` request-response to a correlated stream of `kafka` messages. The `grpc` request message(s) are sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message(s) are received and processed by the `kafka` `requests` topic consumer, it produces response message(s) to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. + +Requests including an `idempotency-key` `grpc` metadata header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. + ```yaml with: capability: produce @@ -402,36 +349,55 @@ with: reply-to: responses ``` -#### with.topic +##### with.topic > `string` The name of a Kafka topic for requests. -#### with.acks +##### with.acks > `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` Kafka acknowledgment mode -#### with.key +##### with.key > `string` The Kafka message key to include with each message. -#### with.overrides +##### with.overrides > `map` of `name: value` properties The Kafka message headers to inject with each message. -#### with.reply-to +##### with.reply-to > `string` The name of the Kafka topic for correlated responses. +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "grpc" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - grpc.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-grpc.md b/src/reference/config/bindings/binding-grpc.md index efc54292..d1d5d54c 100644 --- a/src/reference/config/bindings/binding-grpc.md +++ b/src/reference/config/bindings/binding-grpc.md @@ -12,13 +12,23 @@ tag: Zilla runtime grpc binding. +## Configuration (\* required) + +### type: grpc\* + +Defines a binding with `grpc` protocol support, with `server` or `client` behavior. + +### kind: server + +The `server` kind `grpc` binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. + ```yaml {2} grpc_server: type: grpc kind: server - options: - services: - - proto/echo.proto + catalog: + host_filesystem: + - subject: echo routes: - when: - method: example.EchoService/* @@ -29,56 +39,21 @@ grpc_server: exit: echo_server ``` -## Summary - -Defines a binding with `grpc` protocol support, with `server` or `client` behavior. - -The `server` kind `grpc` binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. +### kind: client The `client` kind `grpc` binding adapts `grpc` request-response streams to `http` request-response streams. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.services](#options-services) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].method](#when-method) - - [when\[\].metadata](#when-metadata) - - [metadata.base64](#metadata-base64) -- [routes\[\].exit\*](#routes-exit) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "client", "server" ] - -Behave as a `grpc` `client` or `server`. - -```yaml -kind: server -``` ### options > `object` `grpc`-specific options. - -```yaml -options: - services: - - proto/echo.proto +```yaml {2} +grpc_client: + type: grpc + kind: client + exit: http_client ``` #### options.services @@ -90,7 +65,6 @@ This property will be removed in a future release. To access '.proto' files from > `array` of `string` Protobuf service definition filenames, typically with `.proto` filename extension. - ### exit > `string` @@ -121,7 +95,7 @@ routes: exit: echo_server ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -134,7 +108,7 @@ routes: - echo:messages ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -151,13 +125,13 @@ routes: base64: Y3VzdG9tIHZhbHVl ``` -#### when[].method +##### when[].method > `string` gRPC service method name, such as `example.EchoService/EchoUnary`, or service method pattern such as `example.EchoService/*`. -#### when[].metadata +##### when[].metadata > `map` of `name: value` properties @@ -171,7 +145,7 @@ Each metadata header value can be `string` or `object` with `base64` property. Base64 encoded value for binary metadata header. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -184,6 +158,25 @@ routes: exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "grpc" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - grpc.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-http-filesystem.md b/src/reference/config/bindings/binding-http-filesystem.md index 5927d45d..a091133d 100644 --- a/src/reference/config/bindings/binding-http-filesystem.md +++ b/src/reference/config/bindings/binding-http-filesystem.md @@ -23,7 +23,9 @@ http_filesystem_proxy: path: ${params.path} ``` -## Summary +## Configuration (\* required) + +### type: http-filesystem\* Defines a binding with `http-filesystem` support, with `proxy` behavior. @@ -31,36 +33,10 @@ The `proxy` kind `http-filesystem` binding adapts `http` data streams into `file Behaves as a web server when combined with `tcp,` `tls`, `http` and `filesystem` bindings. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].path\*](#when-path) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with](#routes-with) - - [with\[\].path\*](#with-path) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "proxy" ] +### kind: proxy\* Behave as an `http-filesystem` `proxy`. -```yaml -kind: proxy -``` - ### exit > `string` @@ -86,7 +62,7 @@ routes: path: ${params.path} ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -99,7 +75,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -112,13 +88,13 @@ routes: - path: /{path} ``` -#### when[].path\* +##### when[].path\* > `string` Path with optional embedded parameter names, such as `/{path}`. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -131,18 +107,37 @@ routes: exit: filesystem_server ``` -### routes[].with +#### routes[].with > `object` Filesystem parameters used when adapting `http` data streams into `filesystem` data streams. -#### with.path\* +##### with.path\* > `string` Topic name, optionally referencing path parameter such as `${params.path}`. +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "http" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - http.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-http-kafka.md b/src/reference/config/bindings/binding-http-kafka.md index d43d93ba..d4c4ec9c 100644 --- a/src/reference/config/bindings/binding-http-kafka.md +++ b/src/reference/config/bindings/binding-http-kafka.md @@ -51,81 +51,16 @@ http_kafka_proxy: location: /items/${params.id};cid=${correlationId} ``` -## Summary +## Configuration (\* required) -The `proxy` kind `http-kafka` binding adapts `http` request-response streams to `kafka` topic streams. - -## Fetch capability - -Routes with `fetch` capability map `http` `GET` requests to a `kafka` log-compacted topic, supporting filtered retrieval of messages with a specific key, or unfiltered retrieval of all messages with distinct keys in the topic merged into a unified response. - -Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers, extracting the parameter values from the inbound `http` request path. - -Status `200` `http` responses include an `etag` header that can be used with `if-none-match` for subsequent conditional `GET` requests to check for updates. Rather than polling, `http` requests can also include the `prefer: wait=N` header to wait a maximum of `N` seconds before responding with `304` if not modified. When a new message arrives in the topic that would modify the response, then all `prefer: wait=N` clients receive the response immediately. - -## Produce capability - -Routes with `produce` capability map any `http` request-response to a correlated pair of `kafka` messages. The `http` request message is sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message received and processed by the `kafka` `requests` topic consumer, it produces a response message to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. - -Requests including an `idempotency-key` `http` header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. +### type: http-kafka\* -Specifying `async` allows clients to include a `prefer: respond-async` header in the `http` request to receive `202 Accepted` response with `location` response header. - -A corresponding `routes[].when` object with matching `GET` method and `location` path is also required for follow up `GET` requests to return the same response as would have been returned if `prefer: respond-async` request header had been omitted. - -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.idempotency](#options-idempotency) - - [idempotency.header](#idempotency-header) - - [options.correlation](#options-correlation) - - [correlation.headers](#correlation-headers) - - [headers.reply-to](#headers-reply-to) - - [headers.correlation-id](#headers-correlation-id) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].method](#when-method) - - [when\[\].path](#when-path) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with](#routes-with) -- [with.capability: fetch](#with-capability-fetch) - - [with.topic](#with-topic) - - [with.filters](#with-filters) - - [filters\[\].key](#filters-key) - - [filters\[\].headers](#filters-headers) - - [with.merge](#with-merge) - - [merge.content-type](#merge-content-type) - - [merge.patch](#merge-patch) - - [patch.initial](#patch-initial) - - [patch.path](#patch-path) -- [with.capability: produce](#with-capability-produce) - - [with.topic](#with-topic-1) - - [with.acks](#with-acks) - - [with.key](#with-key) - - [with.overrides](#with-overrides) - - [with.reply-to](#with-reply-to) - - [with.async](#with-async) - -::: right -\* required -::: - -:::: - -### kind\* +The `proxy` kind `http-kafka` binding adapts `http` request-response streams to `kafka` topic streams. -> `enum` [ "proxy" ] +### kind: proxy\* Behave as an `http-kafka` `proxy`. -```yaml -kind: proxy -``` - ### options > `object` @@ -243,7 +178,7 @@ routes: key: ${params.id} ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -256,7 +191,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -270,19 +205,19 @@ routes: path: /items/{id};cid={correlationId} ``` -#### when[].method +##### when[].method > `string` HTTP Method, such as `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `CONNECT`, `OPTIONS`, `TRACE`, `PATCH`. -#### when[].path +##### when[].path > `string` Path with optional embedded parameter names, such as `/{topic}`. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -295,7 +230,7 @@ routes: exit: kafka_cache_client ``` -### routes[].with +#### routes[].with > **oneOf**: [Fetch](#with-capability-fetch) | [Produce](#with-capability-produce) @@ -313,12 +248,18 @@ with: capability: produce ``` -### with.capability: fetch +#### with.capability: fetch > `object` Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic fetch streams. +Routes with `fetch` capability map `http` `GET` requests to a `kafka` log-compacted topic, supporting filtered retrieval of messages with a specific key, or unfiltered retrieval of all messages with distinct keys in the topic merged into a unified response. + +Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers, extracting the parameter values from the inbound `http` request path. + +Status `200` `http` responses include an `etag` header that can be used with `if-none-match` for subsequent conditional `GET` requests to check for updates. Rather than polling, `http` requests can also include the `prefer: wait=N` header to wait a maximum of `N` seconds before responding with `304` if not modified. When a new message arrives in the topic that would modify the response, then all `prefer: wait=N` clients receive the response immediately. + ```yaml with: capability: fetch @@ -332,13 +273,13 @@ with: path: /- ``` -#### with.topic +##### with.topic > `string` Topic name, optionally referencing path parameter such as `${params.topic}`. -#### with.filters +##### with.filters > `array` of `object` @@ -356,15 +297,15 @@ Message key, optionally referencing path parameter such as `${params.key}`. Message headers, with value optionally referencing path parameter such as `${params.headerX}`. -#### with.merge +##### with.merge > `object` Merge multiple Kafka messages into a unified HTTP response. Kafka merge configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. -##### merge.content-type +##### merge.content-type: application/json -> `const` | Value: application/json +> `const` Content type of merged HTTP response. @@ -378,24 +319,32 @@ Describes how to patch initial HTTP response to include one or more Kafka messag Kafka merge patch configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. -##### patch.initial +##### patch.initial: [] -> `const` | Value: "[]" +> `const` Initial JSON value. -##### patch.path +##### patch.path: /- -> `const` | Value: /- +> `const` JSON Patch path to include each Kafka message in unified HTTP response. -### with.capability: produce +#### with.capability: produce > `object` Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic produce streams. +Routes with `produce` capability map any `http` request-response to a correlated pair of `kafka` messages. The `http` request message is sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message received and processed by the `kafka` `requests` topic consumer, it produces a response message to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. + +Requests including an `idempotency-key` `http` header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. + +Specifying `async` allows clients to include a `prefer: respond-async` header in the `http` request to receive `202 Accepted` response with `location` response header. + +A corresponding `routes[].when` object with matching `GET` method and `location` path is also required for follow up `GET` requests to return the same response as would have been returned if `prefer: respond-async` request header had been omitted. + ```yaml with: capability: produce @@ -409,37 +358,37 @@ with: location: /items/${params.id};cid=${correlationId} ``` -#### with.topic +##### with.topic > `string` Kafka topic name, optionally referencing path parameter such as `${params.topic}`. -#### with.acks +##### with.acks > `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` Kafka acknowledgement mode -#### with.key +##### with.key > `string` Kafka message key, optionally referencing path parameter such as `${params.id}`. -#### with.overrides +##### with.overrides > `map` of `name: value` properties Kafka message headers, with values optionally referencing path parameter. -#### with.reply-to +##### with.reply-to > `string` Kafka reply-to topic name. -#### with.async +##### with.async > `map` of `name: value` properties @@ -447,6 +396,25 @@ Allows an HTTP response to be retrieved asynchronously. A `location: ` property can be used to define the path where an async result can be fetched, with the `` value optionally referencing route path parameters or the `${correlationId}`. +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "http" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - http.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-http.md b/src/reference/config/bindings/binding-http.md index 42accb0c..442a61dc 100644 --- a/src/reference/config/bindings/binding-http.md +++ b/src/reference/config/bindings/binding-http.md @@ -31,11 +31,13 @@ http_server: exit: echo_server ``` -## Summary +## Configuration (\* required) + +### type: http\* Defines a binding with `http` protocol support, with `server` or `client` behavior. -## Server behavior +### kind: server The `server` kind `http` binding decodes `HTTP/1.1` protocol or `HTTP/2` protocol on the inbound network stream, producing higher level application streams for each request. @@ -45,55 +47,42 @@ Authorization is enforced by a [`guard`](../../config/overview.md#guards) and th Conditional routes based on `http` request headers are used to route these application streams to an `exit` binding. -## Client behavior - -The `client` kind `http` binding receives inbound application streams and encodes each request as a network stream via `HTTP/1.1` protocol. Note that the same network stream can be reused to encode multiple `HTTP/1.1` requests. - -Conditional routes based on `http` request headers are used to route these network streams to an `exit` binding. - -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.versions](#options-versions) - - [options.access-control](#options-access-control) - - [access-control.policy\*](#access-control-policy) - - [access-control.policy: same-origin](#access-control-policy-same-origin) - - [access-control.policy: cross-origin](#access-control-policy-cross-origin) - - [access-control.allow](#access-control-allow) - - [allow.origins](#allow-origins) - - [allow.methods](#allow-methods) - - [allow.headers](#allow-headers) - - [allow.credentials](#allow-credentials) - - [access-control.max-age](#access-control-max-age) - - [access-control.expose](#access-control-expose) - - [expose.headers](#expose-headers) - - [options.authorization](#options-authorization) - - [authorization.credentials](#authorization-credentials) - - [credentials.cookies](#credentials-cookies) - - [credentials.headers](#credentials-headers) - - [credentials.query](#credentials-query) - - [options.overrides](#options-overrides) -- [exit](#exit) -- [routes](#routes) - - [routes\[\].guarded](#routes-guarded) - - [routes\[\].when](#routes-when) - - [when\[\].headers](#when-headers) - - [routes\[\].exit\*](#routes-exit) +```yaml {2} +http_server: + type: http + kind: server + options: + access-control: + policy: cross-origin + authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} + routes: + - when: + - headers: + ":scheme": https + ":authority": example.com:443 + exit: echo_server +``` -::: right -\* required -::: -:::: +### kind: client -### kind\* +The `client` kind `http` binding receives inbound application streams and encodes each request as a network stream via `HTTP/1.1` protocol. Note that the same network stream can be reused to encode multiple `HTTP/1.1` requests. -> `enum` [ "server", "client" ] +Conditional routes based on `http` request headers are used to route these network streams to an `exit` binding. -Behave as an `http` `server` or `client`. +```yaml {2} +http_client: + type: http + kind: client + options: + versions: + - h2 + exit: tcp_client +``` ### options @@ -321,6 +310,25 @@ routes: exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "http" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - http.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-kafka-grpc.md b/src/reference/config/bindings/binding-kafka-grpc.md index 5f6e0fe4..1309ff42 100644 --- a/src/reference/config/bindings/binding-kafka-grpc.md +++ b/src/reference/config/bindings/binding-kafka-grpc.md @@ -37,55 +37,19 @@ kafka_grpc_proxy: authority: localhost:7151 ``` -## Summary +## Configuration (\* required) -The `remote_server` kind `kafka-grpc` binding adapts `kafka` topic streams to `grpc` request-response streams. +:::: + +### type: kafka-grpc\* The `grpc` request message is received from a `requests` topic, with a `zilla:correlation-id` header, initiating a `grpc` service method invocation. When the `grpc` response received, a response message is produced to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. Note that `grpc` requests and responses can be `unary` or `streaming`. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.acks](#options-acks) - - [options.idempotency](#options-idempotency) - - [idempotency.metadata](#idempotency-metadata) - - [options.correlation](#options-correlation) - - [correlation.headers](#correlation-headers) - - [headers.service](#headers-service) - - [headers.method](#headers-method) - - [headers.correlation-id](#headers-correlation-id) - - [headers.reply-to](#headers-reply-to) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].topic](#when-topic) - - [when\[\].reply-to](#when-reply-to) - - [when\[\].method](#when-method) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with](#routes-with) - - [with.scheme](#with-scheme) - - [with.authority](#with-authority) - -::: right -\* required -::: +### kind: remote_server\* -:::: - -### kind\* - -> `enum` [ "remote_server" ] - -Behave as an `kafka-grpc` `remote_server`. - -```yaml -kind: remote_server -``` +The `remote_server` kind `kafka-grpc` binding adapts `kafka` topic streams to `grpc` request-response streams. ### options @@ -181,7 +145,7 @@ routes: authority: localhost:7151 ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -194,7 +158,7 @@ routes: - echo:messages ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -209,37 +173,37 @@ routes: method: example.EchoService/* ``` -#### when[].topic +##### when[].topic > `string` The name of a Kafka topic for requests. -#### when[].key +##### when[].key > `string` The name of a Kafka topic for requests. -#### when[].headers +##### when[].headers > `map` of `name: value` properties Header name value pairs (all match). -#### when[].reply-to +##### when[].reply-to > `string` The name of the Kafka topic for correlated responses. -#### when[].method +##### when[].method > `string` Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -252,7 +216,7 @@ routes: exit: kafka_cache_client ``` -### routes[].with +#### routes[].with > `object` @@ -264,18 +228,37 @@ with: authority: localhost:7151 ``` -#### with.scheme +##### with.scheme > `string` The `grpc` request scheme. -#### with.authority +##### with.authority > `string` The `grpc` request authority. +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "grpc" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - grpc.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-kafka-proxy.md b/src/reference/config/bindings/binding-kafka-proxy.md index 0bc9ba2f..bf7fbcd7 100644 --- a/src/reference/config/bindings/binding-kafka-proxy.md +++ b/src/reference/config/bindings/binding-kafka-proxy.md @@ -29,33 +29,13 @@ kafka_proxy: exit: tls_client ``` -## Summary +## Configuration (\* required) -Defines a binding with `kafka-proxy` support, with `proxy` behavior. +### type: kafka-proxy\* -## Configuration +Defines a binding with `kafka-proxy` support, with `proxy` behavior. -:::: note Properties - -- [kind\*](#kind) -- [options\*](#options) -- [options.external\*](#options-external) - - [external.host\*](#external-host) - - [external.port\*](#external-port) -- [options.internal\*](#options-internal) - - [internal.host\*](#internal-host) - - [internal.port\*](#internal-port) -- [exit\*](#exit) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "proxy" ] +### kind: proxy\* Behave as a `proxy`. @@ -75,7 +55,7 @@ options: port: 9094 ``` -### options.external\* +#### options.external\* > `object` @@ -99,7 +79,7 @@ Hostname pattern for external Kafka broker names, where `#` is an integer. Port number for external Kafka broker. -### options.internal\* +#### options.internal\* > `object` @@ -133,6 +113,24 @@ Default exit binding when no conditional routes are viable. exit: tls_client ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-kafka.md b/src/reference/config/bindings/binding-kafka.md index 60a7690e..7d226293 100644 --- a/src/reference/config/bindings/binding-kafka.md +++ b/src/reference/config/bindings/binding-kafka.md @@ -29,11 +29,15 @@ kafka_client: exit: tcp_client ``` -## Summary +## Configuration (\* required) + +### type: kafka\* Defines a binding with `kafka` protocol support, with `cache_client`, `cache_server` or `client` behavior. -## Cache behavior +### kind: cache_client + +### kind: cache_server The `cache_client` and `cache_server` kinds combine to provide a persistent cache of `kafka` messages per `topic` `partition` honoring the `kafka` `topic` configuration for message expiration and compaction. Messages ordering is guaranteed per `partition` and messages are merged into a unified stream for the `topic` spanning all `partitions`. @@ -49,48 +53,12 @@ When the `kafka` `topic` is not compacted, then the binding can be configured to The `cache_client` and `cache_server` also combine to provide a staging area when producing new messages as `kafka` requires exact message length up front when producing new messages and `kafka` does not support producing multiple messages in parallel over the same network connection. -## Client behavior +### kind: client The `client` kind `kafka` binding receives inbound application streams and encodes each as a network stream via `kafka` request-response protocol. Note that the same network stream can be reused to encode multiple `kafka` requests, including both `fetch` and `produce` requests. Conditional routes based on `kafka` `topic` names are used to route these network streams to an `exit` binding that ultimately reaches a `kafka` broker. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) -- [options.bootstrap](#options-bootstrap) -- [options.topics](#options-topics) - - [topics\[\].name\*](#topics-name) - - [topics\[\].defaultOffset](#topics-defaultoffset) - - [topics\[\].key](#topics-key) - - [topics\[\].value](#topics-value) -- [options.servers](#options-servers) -- [options.sasl](#options-sasl) - - [sasl.mechanism\*](#sasl-mechanism) - - [sasl.username](#sasl-username) - - [sasl.password](#sasl-password) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].topic\*](#when-topic) -- [routes\[\].exit\*](#routes-exit) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "cache_client", "cache_server", "client" ] - -Behave as a `kafka` `cache_client`, `cache_server` or `client`. - ### options > `object` @@ -107,13 +75,13 @@ options: defaultOffset: live ``` -### options.bootstrap +#### options.bootstrap > `array` of `string` Topics to bootstrap in cache server even when no clients. -### options.topics +#### options.topics > `array` of `object` @@ -143,13 +111,13 @@ Enforce validation for key Enforce validation for value -### options.servers +#### options.servers > `array` of `string` Bootstrap servers to use when connecting to `kafka` cluster. -### options.sasl +#### options.sasl > `object` @@ -190,7 +158,7 @@ exit: echo_server Conditional `kafka`-specific routes. -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -203,20 +171,20 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` List of conditions (any match) to match this route. Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) -#### when[].topic\* +##### when[].topic\* > `string` Topic name pattern. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -226,6 +194,24 @@ Next binding when following this route. exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-mqtt-kafka.md b/src/reference/config/bindings/binding-mqtt-kafka.md index 9140091c..af77bd02 100644 --- a/src/reference/config/bindings/binding-mqtt-kafka.md +++ b/src/reference/config/bindings/binding-mqtt-kafka.md @@ -35,43 +35,13 @@ mqtt_kafka_proxy: exit: kafka_cache_client ``` -## Summary +## Configuration (\* required) -Defines a binding with `mqtt-kafka` support, with `proxy` behavior. - -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.server](#options-server) - - [options.topics](#options-topics) - - [topics.sessions\*](#topics-sessions) - - [topics.messages\*](#topics-messages) - - [topics.retained\*](#topics-retained) - - [options.clients](#options-clients) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].publish](#when-publish) - - [publish\[\].topic](#publish-topic) - - [when\[\].subscribe](#when-subscribe) - - [subscribe\[\].topic](#subscribe-topic) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with](#routes-with) - - [with.messages](#with-messages) -- [exit](#exit) +### type: mqtt-kafka\* -::: right -\* required -::: - -:::: - -### kind\* +Defines a binding with `mqtt-kafka` support, with `proxy` behavior. -> `enum` [ "proxy" ] +### kind: proxy\* Behave as a `mqtt-kafka` `proxy`. @@ -110,7 +80,11 @@ options: > `string` -Compacted Kafka topic for storing mqtt session states. Cleanup policy must be log compacted. +A Kafka topic for storing mqtt session states. + +::: warning cleanup.policy Required +A `compact` [cleanup.policy](https://kafka.apache.org/30/generated/topic_config.html#topicconfigs_cleanup.policy) is required. +::: ##### topics.messages\* @@ -122,7 +96,11 @@ The default Kafka topic used for routing mqtt messages. > `string` -Compacted Kafka topic for storing mqtt retained messages. +A Kafka topic for storing mqtt retained messages. + +::: info cleanup.policy Recommended +A `compact` [cleanup.policy](https://kafka.apache.org/30/generated/topic_config.html#topicconfigs_cleanup.policy) is recommended. +::: #### options.clients @@ -136,6 +114,24 @@ options: - place/{identity}/# ``` +#### options.publish + +> `object` + +MQTT `publish`-specific options. + +##### publish.qosMax + +> `enum` [ "at_most_once", "at_least_once", "exactly_once" ] | default: "exactly_once" + +Highest allowed QOS level. + +```yaml +options: + publish: + qosMax: at_most_once +``` + ### routes > `array` of `object` @@ -154,7 +150,7 @@ routes: exit: kafka_cache_client ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -167,7 +163,7 @@ routes: - publish:clients ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -183,7 +179,7 @@ routes: - topic: place/# ``` -#### when[].publish +##### when[].publish > `array` of `object` @@ -201,7 +197,7 @@ Array of MQTT topic filters matching topic names for publish. MQTT topic filter pattern. -#### when[].subscribe +##### when[].subscribe > `array` of `object` @@ -219,13 +215,13 @@ Array of MQTT topic filters matching topic names for subscribe. MQTT topic filter pattern. -### routes[].exit\* +#### routes[].exit\* > `string` Next binding when following this route. -### routes[].with +#### routes[].with > `object` @@ -236,7 +232,7 @@ with: messages: mqtt-devices ``` -#### with.messages +##### with.messages > `string` @@ -252,6 +248,24 @@ Default exit binding when no conditional routes are viable. exit: kafka_cache_client ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-mqtt.md b/src/reference/config/bindings/binding-mqtt.md index a9049dc8..3887be22 100644 --- a/src/reference/config/bindings/binding-mqtt.md +++ b/src/reference/config/bindings/binding-mqtt.md @@ -36,52 +36,21 @@ mqtt_server: exit: mqtt_kafka_proxy ``` -## Summary +## Configuration (\* required) + +### type: mqtt\* Defines a binding with `mqtt` protocol support, with `server` behavior. +### kind: server\* + The `server` kind `mqtt` binding decodes the MQTT protocol on the inbound network stream, producing higher level application streams for each `publish` or `subscribe` `topic`. The `session` state is also described by a higher level application stream. Conditional routes based on the `topic` `name` are used to route these application streams to an `exit` binding. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [exit](#exit) -- [options](#options) -- [options.authorization](#options-authorization) - - [authorization.credentials](#authorization-credentials) - - [credentials.connect](#credentials-connect) - - [connect.username](#connect-username) - - [connect.password](#connect-password) -- [options.versions](#options-versions) -- [options.topics](#options-topics) - - [topics\[\].name\*](#topics-name) - - [topics\[\].content](#topics-content) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].session](#when-session) - - [session\[\].client-id](#session-client-id) - - [when\[\].publish](#when-publish) - - [publish\[\].topic](#publish-topic) - - [when\[\].subscribe](#when-subscribe) - - [subscribe\[\].topic](#subscribe-topic) -- [routes\[\].exit\*](#routes-exit) - -::: right -\* required -::: - -:::: +### kind: client\* -### kind\* - -> `enum` [ "server" ] - -Behave as a `mqtt` `server`. +The `client` kind `mqtt` binding encodes the MQTT protocol to the outbound network stream. ### exit @@ -111,7 +80,7 @@ options: - v3.1.1 ``` -### options.authorization +#### options.authorization > `object` as map of named objects @@ -149,13 +118,13 @@ Extract credentials from the MQTT connect packet username property with `{creden Extract credentials from the MQTT connect packet password property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. -### options.versions +#### options.versions > `array` of `enum` [ "v5", "v3.1.1" ] Supported protocol versions. -### options.topics +#### options.topics > `array` of `object` @@ -173,13 +142,27 @@ Topic name. Enforce validation for content +#### topics[].user-properties + +> `map` of "name: [model](../models/)" properties + +Enforce validation for user provided properties + +```yaml +user-properties: + my-app-prop: + type: integer + minimum: 0 + maximum: 100 +``` + ### routes > `array` of `object` Conditional `mqtt`-specific routes. -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -192,7 +175,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -211,7 +194,7 @@ routes: - topic: reply ``` -#### when[].session +##### when[].session > `array` of `object` @@ -223,27 +206,27 @@ Array of mqtt session properties An MQTT client identifier, allowing the usage of wildcards. -#### when[].publish +##### when[].publish > `array` of `object` Array of MQTT topic names for publish capability. -##### publish[].topic +###### publish[].topic > `string` -#### when[].subscribe +##### when[].subscribe > `array` of `object` Array of MQTT topic names for subscribe capability. -##### subscribe[].topic +###### subscribe[].topic > `string` -### routes[].exit\* +#### routes[].exit\* > `string` @@ -256,6 +239,24 @@ routes: exit: mqtt_kafka_proxy ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-openapi-asyncapi.md b/src/reference/config/bindings/binding-openapi-asyncapi.md index cfd59ae9..12ed1867 100644 --- a/src/reference/config/bindings/binding-openapi-asyncapi.md +++ b/src/reference/config/bindings/binding-openapi-asyncapi.md @@ -38,50 +38,16 @@ openapi_asyncapi_proxy: api-id: my-asyncapi-spec ``` -## Summary +## Configuration (\* required) -The `proxy` kind `openapi-asyncapi` binding adapts OpenAPI request-response streams to AsyncAPI streams. - -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.specs](#options-specs) - - [specs.openapi](#specs-openapi) - - [openapi.catalog](#openapi-catalog) - - [catalog.subject](#catalog-subject) - - [catalog.version](#catalog-version) - - [specs.asyncapi](#specs-asyncapi) - - [asyncapi.catalog](#asyncapi-catalog) - - [catalog.subject](#catalog-subject) - - [catalog.version](#catalog-version) -- [routes](#routes) -- [routes\[\].when](#routes-when) - - [when\[\].api-id](#when-api-id) - - [when\[\].operation-id](#when-operation-id) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with](#routes-with) - - [with.api-id](#with-api-id) - - [with.operation-id](#with-operation-id) - -::: right -\* required -::: +### type: openapi-asyncapi\* -:::: - -### kind\* +The `proxy` kind `openapi-asyncapi` binding adapts OpenAPI request-response streams to AsyncAPI streams. -> `enum` [ "proxy" ] +### kind: proxy\* Behave as an `openapi-asyncapi` `proxy`. -```yaml -kind: proxy -``` - ### options > `object` @@ -153,26 +119,26 @@ Catalog artifact version to use. Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations to `asyncapi` operations. -### routes[].when +#### routes[].when > `array` of `object` List of conditions to match this route when adapting `openapi` request-response streams to `asyncapi` streams. Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) -#### when[].api-id +##### when[].api-id > `string` OpenAPI spec identifier that matches from the `openapi` binding request stream. -#### when[].operation-id +##### when[].operation-id > `string` OpenAPI OperationId that can be mapped between OpenAPI and AsyncAPI spec -### routes[].exit\* +#### routes[].exit\* > `string` @@ -185,7 +151,7 @@ routes: exit: asyncapi_client ``` -### routes[].with +#### routes[].with > `object` @@ -196,18 +162,36 @@ with: api-id: my-asyncapi-spec ``` -#### with.api-id +##### with.api-id > `string` AsyncAPI spec identifier that the route exits with to the next binding -#### with.operation-id +##### with.operation-id > `string` AsyncAPI OperationId that the route exits with to the next binding +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-openapi.md b/src/reference/config/bindings/binding-openapi.md index a580ec5c..167415d7 100644 --- a/src/reference/config/bindings/binding-openapi.md +++ b/src/reference/config/bindings/binding-openapi.md @@ -43,61 +43,19 @@ openapi_client: version: latest ``` -## Summary +## Configuration (\* required) -Defines a binding with `openapi` spec, with `server` or `client` behavior. - -The `server` kind `openapi` binding creates composite of `tcp`, `tls`, and `http` bindings with server kind and adapts HTTP request-response streams to OpenAPI request-response streams. +### type: openapi\* -The `client` kind `openapi` binding creates composite of `http`, `tls`, and `tcp` bindings with client kind and adapts OpenAPI request-response streams to HTTP request-response streams. - -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) - - [options.specs](#options-specs) - - [specs.catalog](#specs-catalog) - - [catalog.subject](#catalog-subject) - - [catalog.version](#catalog-version) - - [specs.servers](#specs-servers) - - [servers.url](#servers-url) - - [options.http](#options-http) - - [http.authorization](#http-authorization) - - [authorization.credentials](#authorization-credentials) - - [credentials.cookies](#credentials-cookies) - - [credentials.headers](#credentials-headers) - - [credentials.query](#credentials-query) - - [options.tcp](#options-tcp) - - [tcp.host](#tcp-host) - - [tcp.port](#tcp-port) - - [options.tls](#options-tls) - - [tls.version](#tls-version) - - [tls.keys](#tls-keys) - - [tls.trust](#tls-trust) - - [tls.signers](#tls-signers) - - [tls.trustcacerts](#tls-trustcacerts) - - [tls.sni\*](#tls-sni) - - [tls.alpn](#tls-alpn) - - [tls.mutual](#tls-mutual) -- [exit](#exit) - -::: right -\* required -::: - -:::: +Defines a binding with `openapi` spec, with `server` or `client` behavior. -### kind\* +### kind: server\* -> `enum` [ "client", "server" ] +The `server` kind `openapi` binding creates composite of `tcp`, `tls`, and `http` bindings with server kind and adapts HTTP request-response streams to OpenAPI request-response streams. -Behave as a `openapi` `client` or `server`. +### kind: client\* -```yaml -kind: server -``` +The `client` kind `openapi` binding creates composite of `http`, `tls`, and `tcp` bindings with client kind and adapts OpenAPI request-response streams to HTTP request-response streams. ### options @@ -277,6 +235,24 @@ Default exit binding. exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-proxy.md b/src/reference/config/bindings/binding-proxy.md index a4dfb52b..eaafb22c 100644 --- a/src/reference/config/bindings/binding-proxy.md +++ b/src/reference/config/bindings/binding-proxy.md @@ -25,46 +25,19 @@ proxy_server: exit: tls_server ``` -## Summary +## Configuration (\* required) -Defines a binding with `proxy` protocol support, with `server` or `client` behavior. +### type: proxy\* -The `server` kind `proxy` binding decodes `Proxy v2` protocol on the inbound network stream, producing higher level application streams for each request. - -The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via `Proxy v2` protocol. - -Conditional routes based on the network transport type or network addresses are used to route these streams to an `exit` binding. - -## Configuration - -:::: note Properties +Defines a binding with `proxy` protocol support, with `server` or `client` behavior. Conditional routes based on the network transport type or network addresses are used to route these streams to an `exit` binding. -- [kind\*](#kind) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].transport](#when-transport) - - [when\[\].family](#when-family) - - [when\[\].source](#when-source) - - [source.host](#source-host) - - [source.port](#source-port) - - [when\[\].destination](#when-destination) - - [destination.host](#destination-host) - - [destination.port](#destination-port) -- [routes\[\].exit\*](#routes-exit) +### kind: server\* -::: right -\* required -::: - -:::: - -### kind\* +The `server` kind `proxy` binding decodes `Proxy v2` protocol on the inbound network stream, producing higher level application streams for each request. -> `enum` [ "client", "server" ] +### kind: client\* -Behave as `proxy` `client` or `server`. +The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via `Proxy v2` protocol. ### exit @@ -92,7 +65,7 @@ routes: exit: tls_server ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -105,26 +78,26 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` List of conditions (any match) to match this route. Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) -#### when[].transport +##### when[].transport > `enum` [ "stream", "datagram" ] Transport type. -#### when[].family +##### when[].family > `enum` [ "inet", "inet4", "inet6", "unix" ] Address family. -#### when[].source +##### when[].source > `object` @@ -142,7 +115,7 @@ Hostname or IP address. Port number. -#### when[].destination +##### when[].destination > `object` @@ -160,7 +133,7 @@ Hostname or IP address. Port number. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -173,6 +146,24 @@ routes: exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-sse-kafka.md b/src/reference/config/bindings/binding-sse-kafka.md index 1e9c4116..435dcb40 100644 --- a/src/reference/config/bindings/binding-sse-kafka.md +++ b/src/reference/config/bindings/binding-sse-kafka.md @@ -25,10 +25,14 @@ sse_kafka_proxy: id: '["${base64(key)}","${etag}"]' ``` -## Summary +## Configuration (\* required) + +### type: sse-kafka\* Defines a binding with `sse-kafka` support, with `proxy` behavior. +### kind: proxy\* + The `proxy` kind `sse-kafka` binding adapts `sse` data streams into `kafka` data streams, so that `kafka` messages can be delivered to `sse` clients. Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers, extracting the parameter values from the inbound `sse` path. @@ -39,37 +43,6 @@ The event `id` can be configured to include the message `key` and `etag` of each When a `kafka` tombstone (`null` value) message is received by the `sse-kafka` binding, it delivers a `delete` event to the `sse` client. This informs the client which specific message has been deleted by observing the message key from the `sse` `delete` event `id`. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].path\*](#when-path) -- [routes\[\].exit\*](#routes-exit) -- [routes\[\].with](#routes-with) - - [with.topic\*](#with-topic) - - [with.filters](#with-filters) - - [filters\[\].key](#filters-key) - - [filters\[\].headers](#filters-headers) - - [with.event](#with-event) - - [event.id\*](#event-id) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "proxy" ] - -Behave as a `sse-kafka` `proxy`. - ### exit > `string` @@ -97,7 +70,7 @@ routes: id: '["${base64(key)}","${etag}"]' ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -110,7 +83,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -123,13 +96,13 @@ routes: - path: /items ``` -#### when[].path\* +##### when[].path\* > `string` Path with optional embedded parameter names, such as `/{topic}`. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -142,19 +115,19 @@ routes: exit: kafka_cache_client ``` -### routes[].with +#### routes[].with > `object` Kafka parameters used when adapting `sse` data streams to `kafka` data streams. -#### with.topic\* +##### with.topic\* > `string` Topic name, optionally referencing path parameter such as `${params.topic}`. -#### with.filters +##### with.filters > `array` of `object` @@ -174,7 +147,7 @@ Message key, optionally referencing path parameter such as `${params.key}`. Message headers, with value optionally referencing path parameter such as `${params.headerX}`. -#### with.event +##### with.event > `object` @@ -186,6 +159,25 @@ Defines the SSE event syntax used when delivering Kafka messages to SSE clients. Format of `id` field in `sse` `event` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "http" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - http.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-sse.md b/src/reference/config/bindings/binding-sse.md index 4c15c8ce..480f2d7f 100644 --- a/src/reference/config/bindings/binding-sse.md +++ b/src/reference/config/bindings/binding-sse.md @@ -18,39 +18,21 @@ sse_server: exit: sse_kafka_proxy ``` -## Summary +## Configuration (\* required) -Defines a binding with `Server Sent Events (sse)` protocol support, with `server` behavior. +### type: sse\* -The `server` kind `sse` binding converts inbound `http` request-response streams into `sse` request-response streams, with optionally configured `retry` delay. +Defines a binding with Server Sent Events (sse) protocol support, with `server` behavior. -Messages received on the `sse` response stream are encoded using `Server Sent Events` protocol, including support for custom `event` types and last event `id`. - -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) -- [options.retry](#options-retry) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].path\*](#when-path) -- [routes\[\].exit\*](#routes-exit) - -::: right -\* required -::: +### kind: server\* -:::: +The `server` kind `sse` binding converts inbound `http` request-response streams into `sse` request-response streams. -### kind\* +Messages received on the `sse` response stream are encoded using `Server Sent Events` protocol, including support for custom `event` types and last event `id`. -> `enum` [ "client", "server" ] +### kind: client\* -Behave as a `sse` `client` or `server`. +The `client` kind `sse` binding converts outbound `see` request-response streams into `http` request-response streams. ### options @@ -63,12 +45,30 @@ options: retry: 2000 ``` -### options.retry +#### options.retry > `integer` | Default: `2000` Retry delay (ms) +#### options.requests + +> `array` of `object` + +the `requests`-specific options. + +##### requests[].path + +> `string` + +The path selector. + +##### requests[].content + +> `object` of a named [`model`](../models/) + +Enforce validation for the request content. + ### exit > `string` @@ -95,7 +95,7 @@ routes: exit: sse_kafka_proxy ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -108,7 +108,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -121,13 +121,13 @@ routes: - path: /items ``` -#### when[].path\* +##### when[].path\* > `string` Path pattern. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -140,6 +140,25 @@ routes: exit: sse_kafka_proxy ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "http" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - http.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-tcp.md b/src/reference/config/bindings/binding-tcp.md index b650d481..89bb0567 100644 --- a/src/reference/config/bindings/binding-tcp.md +++ b/src/reference/config/bindings/binding-tcp.md @@ -21,44 +21,21 @@ tcp_server: port: 12345 ``` -## Summary +## Configuration (\* required) -Defines a binding with `tcp` protocol support, with `server` or `client` behavior. - -The `server` kind `tcp` binding listens for inbound socket connections, producing higher level application streams for each remote `tcp` client. +### type: tcp\* -The `client` kind `tcp` binding receives inbound application streams and initiates outbound `tcp` network connections to a remote `tcp` server address. +Defines a binding with `tcp` protocol support, with `server` or `client` behavior. Conditional routes based on the hostname authority and network address mask are used to route these streams to an `exit` binding. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) -- [options.host](#options-host) -- [options.port](#options-port) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].authority](#when-authority) - - [when\[\].cidr](#when-cidr) - - [when\[\].port](#when-port) -- [routes\[\].exit\*](#routes-exit) - -::: right -\* required -::: - -:::: +### kind: server\* -### kind\* +The `server` kind `tcp` binding listens for inbound socket connections, producing higher level application streams for each remote `tcp` client. -> `enum` [ "client", "server" ] +### kind: client\* -Behave as a `tcp` `client` or `server`. +The `client` kind `tcp` binding receives inbound application streams and initiates outbound `tcp` network connections to a remote `tcp` server address. ### options @@ -72,13 +49,13 @@ options: port: 12345 ``` -### options.host +#### options.host > `string` Hostname or IP address. -### options.port +#### options.port > `integer` | `string` | `array` of `integer` | `array` of `string` @@ -100,38 +77,38 @@ exit: echo_server Conditional `tcp`-specific routes. -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` List of roles required by each named guard to authorize this route. -### routes[].when +#### routes[].when > `array` of `object` List of conditions (any match) to match this route. Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) -#### when[].authority +##### when[].authority > `string` Associated authority. -#### when[].cidr +##### when[].cidr > `string` CIDR mask. -#### when[].port +##### when[].port > `integer` | `string` | `array` of `integer` | `array` of `string` Port number(s), including port number ranges. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -144,6 +121,24 @@ routes: exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-tls.md b/src/reference/config/bindings/binding-tls.md index 8f8ba97d..f5b23bad 100644 --- a/src/reference/config/bindings/binding-tls.md +++ b/src/reference/config/bindings/binding-tls.md @@ -29,11 +29,13 @@ tls_server: exit: echo_server ``` -## Summary +## Configuration (\* required) + +### type: tls\* Defines a binding with `tls` protocol support, with `server`, `client` or `proxy` behavior. -## Server behavior +### kind: server The `server` kind tls binding decodes encrypted TLS protocol on the inbound network stream, producing higher level cleartext application streams for each request. @@ -41,7 +43,7 @@ Certificates and keys required to complete the TLS handshake are provided by a ` Conditional routes based on `tls` hostname authority or negotiated ALPN protocol are used to route these streams to an `exit` binding. -## Client behavior +### kind: client The `client` kind `tls` binding receives inbound application streams and encodes each as an encrypted network stream via TLS protocol. @@ -49,48 +51,12 @@ Certificates and keys required to complete the TLS handshake are provided by a ` Conditional routes based on `tls` hostname authority or negotiated ALPN protocol are used to route these streams to an `exit` binding. -## Proxy behavior +### kind: proxy The `proxy` kind `tls` binding detects `ClientHello` `server_name` extension to provide TLS virtual hosting by routing based on server name. A `vault` is not required to proxy TLS protocol as the handshake is only observed read-only as it routes through the `tls` `proxy` binding. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [vault](#vault) -- [options](#options) -- [options.version](#options-version) -- [options.keys](#options-keys) -- [options.trust](#options-trust) -- [options.signers](#options-signers) -- [options.trustcacerts](#options-trustcacerts) -- [options.sni\*](#options-sni) -- [options.alpn](#options-alpn) -- [options.mutual](#options-mutual) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].authority](#when-authority) - - [when\[\].alpn](#when-alpn) - - [when\[\].port](#when-port) -- [routes\[\].exit\*](#routes-exit) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "client", "server", "proxy" ] - -Behave as a `tls` `client`, `server` or `proxy`. - ### vault > `string` @@ -113,49 +79,49 @@ options: - echo ``` -### options.version +#### options.version > `string` Protocol version. -### options.keys +#### options.keys > `array` of `string` A list of reference names for the Vault key. -### options.trust +#### options.trust > `array` of `string` A list of reference names for the Vault certificate. -### options.signers +#### options.signers > `array` of `string` A list of reference names for the Vault signer certificate. -### options.trustcacerts +#### options.trustcacerts > `boolean` | Default: `true` when trust is `null` Trust CA certificates. -### options.sni\* +#### options.sni\* > `array` of `string` A list of the Server Name Indications. -### options.alpn +#### options.alpn > `array` of `string` Application protocols. -### options.mutual +#### options.mutual > `enum` [ "required", "requested", "none" ] | Default: `"none"` @@ -184,7 +150,7 @@ routes: exit: echo_server ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -197,7 +163,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -210,25 +176,25 @@ routes: - alpn: echo ``` -#### when[].authority +##### when[].authority > `string` Associated authority. -#### when[].alpn +##### when[].alpn > `string` Application protocol. -#### when[].port +##### when[].port > `integer` | `string` | `array` of `integer` | `array` of `string` Port number(s), including port number ranges. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -241,6 +207,24 @@ routes: exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/bindings/binding-ws.md b/src/reference/config/bindings/binding-ws.md index cf74c245..26e119bb 100644 --- a/src/reference/config/bindings/binding-ws.md +++ b/src/reference/config/bindings/binding-ws.md @@ -21,62 +21,31 @@ ws_server: exit: echo_server ``` -## Summary +## Configuration (\* required) -Defines a binding with `WebSockets` protocol support, with `server` or `client` behavior. +### type: ws\* -## Server behavior +Defines a binding with WebSockets protocol support, with `server` or `client` behavior. + +### kind: server\* The `server` kind `ws` binding converts inbound `http` request-response streams into `ws` full-duplex streams. Conditional routes based on `ws` scheme, authority, path or negotiated subprotocol are used to route these streams to an `exit` binding. -## Client behavior +### kind: client\* The `client` kind `ws` binding converts inbound `ws` full duplex streams into `http` request-response streams. Conditional routes based on `ws` scheme, authority, path or negotiated subprotocol are used to route these streams to an `exit` binding. -## Configuration - -:::: note Properties - -- [kind\*](#kind) -- [options](#options) -- [options.defaults](#options-defaults) - - [defaults.protocol](#defaults-protocol) - - [defaults.scheme](#defaults-scheme) - - [defaults.authority](#defaults-authority) - - [defaults.path](#defaults-path) -- [exit](#exit) -- [routes](#routes) -- [routes\[\].guarded](#routes-guarded) -- [routes\[\].when](#routes-when) - - [when\[\].protocol](#when-protocol) - - [when\[\].scheme](#when-scheme) - - [when\[\].authority](#when-authority) - - [when\[\].path](#when-path) -- [routes\[\].exit\*](#routes-exit) - -::: right -\* required -::: - -:::: - -### kind\* - -> `enum` [ "client", "server" ] - -Behave as a `ws` `client` or `server`. - ### options > `object` `ws`-specific options. -### options.defaults +#### options.defaults > `object` @@ -129,7 +98,7 @@ routes: exit: echo_server ``` -### routes[].guarded +#### routes[].guarded > `object` as named map of `string:string` `array` @@ -142,7 +111,7 @@ routes: - read:items ``` -### routes[].when +#### routes[].when > `array` of `object` @@ -155,31 +124,31 @@ routes: - protocol: echo ``` -#### when[].protocol +##### when[].protocol > `string` Subprotocol pattern. -#### when[].scheme +##### when[].scheme > `string` Scheme pattern. -#### when[].authority +##### when[].authority > `string` Authority pattern. -#### when[].path +##### when[].path > `string` Path pattern. -### routes[].exit\* +#### routes[].exit\* > `string` @@ -192,6 +161,24 @@ routes: exit: echo_server ``` +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` + --- ::: right diff --git a/src/reference/config/catalogs/catalog-apicurio-registry.md b/src/reference/config/catalogs/catalog-apicurio-registry.md index 7a9d1f3a..b78538d0 100644 --- a/src/reference/config/catalogs/catalog-apicurio-registry.md +++ b/src/reference/config/catalogs/catalog-apicurio-registry.md @@ -21,25 +21,11 @@ catalog: id-encoding: default ``` -## Summary +## Configuration (\* required) -Defines a catalog with schemas, AsyncAPI/OpenAPI definitions pulled from a remote registry to enforce validation or create APIs. - -## Configuration - -:::: note Properties +### type: apicurio-registry\* -- [options](#options) - - [options.url\*](#options-url) - - [options.group-id](#options-group-id) - - [options.use-id](#options-use-id) - - [options.id-encoding](#options-id-encoding) - -::: right -\* required -::: - -:::: +Defines a catalog with schemas, AsyncAPI/OpenAPI definitions pulled from a remote registry to enforce validation or create APIs. ### options diff --git a/src/reference/config/catalogs/catalog-aws-glue.md b/src/reference/config/catalogs/catalog-aws-glue.md index a7ada167..8c9daa29 100644 --- a/src/reference/config/catalogs/catalog-aws-glue.md +++ b/src/reference/config/catalogs/catalog-aws-glue.md @@ -22,24 +22,11 @@ catalog: compression: zlib ``` -## Summary +## Configuration (\* required) -Defines a catalog that can fetch schemas [AWS Glue](https://aws.amazon.com/glue/) to enforce validation. - -## Configuration - -:::: note Properties +### type: aws-glue\* -- [options](#options) - - [options.registry\*](#options-registry) - - [options.max-age](#options-max-age) - - [options.compression](#options-compression) - -::: right -\* required -::: - -:::: +Defines a catalog that can fetch schemas [AWS Glue](https://aws.amazon.com/glue/) to enforce validation. ### options diff --git a/src/reference/config/catalogs/catalog-confluent-schema-registry.md b/src/reference/config/catalogs/catalog-confluent-schema-registry.md index 2166ac52..3de62375 100644 --- a/src/reference/config/catalogs/catalog-confluent-schema-registry.md +++ b/src/reference/config/catalogs/catalog-confluent-schema-registry.md @@ -21,23 +21,11 @@ catalog: context: default ``` -## Summary +## Configuration (\* required) -Defines a catalog with a schema pulled from a remote schema registry to enforce validation. - -## Configuration - -:::: note Properties - -- [options](#options) - - [options.url\*](#options-url) - - [options.context](#options-context) - -::: right -\* required -::: +### type: confluent-schema-registry\* -:::: +Defines a catalog with a schema pulled from a remote schema registry to enforce validation. ### options @@ -54,3 +42,9 @@ Schema Registry URL to access schemas via API calls. > `string` | Default: `"default"` Schema context represents an independent scope in the Schema Registry. + +--- + +::: right +\* required +::: diff --git a/src/reference/config/catalogs/catalog-filesystem.md b/src/reference/config/catalogs/catalog-filesystem.md index 858df507..3b2514fa 100644 --- a/src/reference/config/catalogs/catalog-filesystem.md +++ b/src/reference/config/catalogs/catalog-filesystem.md @@ -19,23 +19,11 @@ catalogs: path: path/to/local_file.txt ``` -## Summary +## Configuration (\* required) -Defines a catalog with schemas, AsyncAPI/OpenAPI definitions or proto files pulled from the filesystem relative `zilla.yaml` to enforce validation, create APIs or gRPC services. - -## Configuration - -:::: note Properties +### type: filesystem\* -- [options](#options) - - [options.subjects\*](#options-subjects) - - [subjects.path\*](#subjects-path) - -::: right -\* required -::: - -:::: +Defines a catalog with schemas, AsyncAPI/OpenAPI definitions or proto files pulled from the filesystem relative `zilla.yaml` to enforce validation, create APIs or gRPC services. ### options diff --git a/src/reference/config/catalogs/catalog-inline.md b/src/reference/config/catalogs/catalog-inline.md index 16d19da3..d1d9c006 100644 --- a/src/reference/config/catalogs/catalog-inline.md +++ b/src/reference/config/catalogs/catalog-inline.md @@ -13,7 +13,7 @@ Zilla runtime inline catalog. catalog: type: inline options: - subjects: + subjects: items-snapshots: schema: | { @@ -33,24 +33,11 @@ catalog: } ``` -## Summary +## Configuration (\* required) -Defines a catalog with schemas to enforce validation. The schemas are defined inline with the other properties. - -## Configuration - -:::: note Properties +### type: inline\* -- [options](#options) - - [options.subjects\*](#options-subjects) - - [subjects.schema\*](#subjects-schema) - - [subjects.version](#subjects-version) - -::: right -\* required -::: - -:::: +Defines a catalog with schemas to enforce validation. The schemas are defined inline with the other properties. ### options diff --git a/src/reference/config/catalogs/catalog-karapace-schema-registry.md b/src/reference/config/catalogs/catalog-karapace-schema-registry.md index 6fe41024..702bb0f4 100644 --- a/src/reference/config/catalogs/catalog-karapace-schema-registry.md +++ b/src/reference/config/catalogs/catalog-karapace-schema-registry.md @@ -19,23 +19,11 @@ catalog: context: default ``` -## Summary +## Configuration (\* required) -Defines a catalog with a schema pulled from a remote schema registry to enforce validation. - -## Configuration - -:::: note Properties +### type: karapace-schema-registry\* -- [options](#options) - - [options.url\*](#options-url) - - [options.context](#options-context) - -::: right -\* required -::: - -:::: +Defines a catalog with a schema pulled from a remote schema registry to enforce validation. ### options diff --git a/src/reference/config/catalogs/catalog-schema-registry.md b/src/reference/config/catalogs/catalog-schema-registry.md index e2641434..f0b329a5 100644 --- a/src/reference/config/catalogs/catalog-schema-registry.md +++ b/src/reference/config/catalogs/catalog-schema-registry.md @@ -17,23 +17,11 @@ catalog: context: default ``` -## Summary +## Configuration (\* required) -Defines a catalog with a schema pulled from a remote schema registry to enforce validation. - -## Configuration - -:::: note Properties +### type: schema-registry\* -- [options](#options) - - [options.url\*](#options-url) - - [options.context](#options-context) - -::: right -\* required -::: - -:::: +Defines a catalog with a schema pulled from a remote schema registry to enforce validation. ### options diff --git a/src/reference/config/guards/guard-jwt.md b/src/reference/config/guards/guard-jwt.md index afc4d887..97d6715d 100644 --- a/src/reference/config/guards/guard-jwt.md +++ b/src/reference/config/guards/guard-jwt.md @@ -46,30 +46,9 @@ guards: challenge: 30 ``` -## Configuration - -:::: note Properties - -- [options](#options) -- [options.issuer](#options-issuer) - - [options.audience](#options-audience) - - [options.challenge](#options-challenge) - - [options.keys](#options-keys) - - [keys\[\].kty](#keys-kty) - - [keys\[\].kid](#keys-kid) - - [keys\[\].n](#keys-n) - - [keys\[\].e](#keys-e) - - [keys\[\].alg](#keys-alg) - - [keys\[\].crv](#keys-crv) - - [keys\[\].x](#keys-x) - - [keys\[\].y](#keys-y) - -::: right \* required -::: - -:::: +## Configuration (\* required) -### type: jwt +### type: jwt\* Defines a guard with `JSON Web Token (JWT)` support. @@ -126,41 +105,44 @@ Challenge period (seconds). If not provided, relies on the `issuer` to infer the location of a remote `.well-known/jwks.json` file. -::: info Examples +::: note Supported keys -**kty** `string` +**kty**: `string` > Key type, e.g. "RSA" , "EC". -**kid** `string` +**kid**: `string` > Key ID. -**n** `string` +**n**: `string` > "RSA" modulus. -**e** `string` +**e**: `string` > "RSA" exponent. -**alg** `string` +**alg**: `string` > "RSA" algorithm, e.g. "RS256". -**crv** `string` +**crv**: `string` > "EC" curve name. -**x** `string` +**x**: `string` > "EC" point X coordinate. -**y** `string` +**y**: `string` > "EC" point Y coordinate. +::: + --- -::: right \* required +::: right +\* required ::: diff --git a/src/reference/config/models/model-avro.md b/src/reference/config/models/model-avro.md index 940c74aa..1a10341d 100644 --- a/src/reference/config/models/model-avro.md +++ b/src/reference/config/models/model-avro.md @@ -21,26 +21,11 @@ catalog: - id: 1 ``` -## Summary +## Configuration (\* required) -Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. - -## Configuration - -:::: note Properties +### model: avro\* -- [view](#view) -- [catalog\*](#catalog) - - [catalog.strategy](#catalog-strategy) - - [catalog.subject](#catalog-subject) - - [catalog.version](#catalog-version) - - [catalog.id](#catalog-id) - -::: right -\* required -::: - -:::: +Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. ### view diff --git a/src/reference/config/models/model-integer.md b/src/reference/config/models/model-integer.md index 7c4db869..4743e17d 100644 --- a/src/reference/config/models/model-integer.md +++ b/src/reference/config/models/model-integer.md @@ -13,6 +13,8 @@ Zilla runtime integer model model: integer ``` -## Summary +## Configuration (\* required) + +### model: integer\* Defines a model to enforce validation for integer data. diff --git a/src/reference/config/models/model-json.md b/src/reference/config/models/model-json.md index 3babcd14..2bbe1e8f 100644 --- a/src/reference/config/models/model-json.md +++ b/src/reference/config/models/model-json.md @@ -20,25 +20,11 @@ catalog: - id: 1 ``` -## Summary +## Configuration (\* required) -Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. - -## Configuration - -:::: note Properties +### model: json\* -- [catalog\*](#catalog) - - [catalog.strategy](#catalog-strategy) - - [catalog.subject](#catalog-subject) - - [catalog.version](#catalog-version) - - [catalog.id](#catalog-id) - -::: right -\* required -::: - -:::: +Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. ### catalog\* diff --git a/src/reference/config/models/model-protobuf.md b/src/reference/config/models/model-protobuf.md index 21d474c4..317566b6 100644 --- a/src/reference/config/models/model-protobuf.md +++ b/src/reference/config/models/model-protobuf.md @@ -24,27 +24,11 @@ catalog: record: EchoMessage ``` -## Summary +## Configuration (\* required) -Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. - -## Configuration - -:::: note Properties +### type: protobuf\* -- [view](#view) -- [catalog\*](#catalog) - - [catalog.strategy](#catalog-strategy) - - [catalog.subject](#catalog-subject) - - [catalog.version](#catalog-version) - - [catalog.id](#catalog-id) - - [catalog.record\*](#catalog-record) - -::: right -\* required -::: - -:::: +Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. ### view diff --git a/src/reference/config/models/model-string.md b/src/reference/config/models/model-string.md index b0e6ae16..4aa07681 100644 --- a/src/reference/config/models/model-string.md +++ b/src/reference/config/models/model-string.md @@ -9,29 +9,40 @@ category: Zilla runtime string model +## Configuration (\* required) + +### model: string\* + +Defines a model to enforce validation for string data. + ```yaml {1} model: string encoding: utf_8 +minLength: 1 +maxLength: 100 +pattern: ^wait=\d+$ ``` -## Summary +### encoding -Defines a model to enforce validation for string data. +> `enum` [ "utf_8","utf_16" ] -## Configuration +Define character encoding for unicode. + +### minLength -:::: note Properties +> `integer` | minimum: 1 -- [encoding\*](#encoding) +Define string minimum length. -::: right -\* required -::: +### maxLength -:::: +> `integer` | minimum: 1 -### encoding\* +Define string maximum length. + +### pattern > `string` -Define character encoding for unicode. +Define string regex pattern. diff --git a/src/reference/config/overview.md b/src/reference/config/overview.md index d7f80e28..9d3fbed8 100644 --- a/src/reference/config/overview.md +++ b/src/reference/config/overview.md @@ -26,26 +26,7 @@ telemetry: ... ``` -## Configuration - -:::: note Properties - -- [name\*](#name) -- [bindings](#bindings) - - [routes.exit](#routes-exit) -- [guards](#guards) -- [vaults](#vaults) -- [catalogs](#catalogs) -- [telemetry](#telemetry) - - [attributes](#attributes) - - [exporters](#exporters) - - [metrics](#metrics) - -::: right -\* required -::: - -:::: +## Configuration (\* required) ### name\* diff --git a/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md b/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md index 185b0888..ae02e945 100644 --- a/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md +++ b/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md @@ -27,27 +27,11 @@ exporters: stream: zilla-log-stream ``` -## Summary +## Configuration (\* required) -Specifies an exporter for transmitting Custom Metrics and Log Events to AWS CloudWatch. - -## Configuration - -:::: note Properties +### type: aws-cloudwatch\* -- [options](#options) -- [options.metrics](#options-metrics) - - [metrics.namespace\*](#metrics-namespace) - - [metrics.interval](#metrics-interval) -- [options.logs](#options-logs) - - [logs.group\*](#logs-group) - - [logs.stream\*](#logs-stream) - -::: right -\* required -::: - -:::: +Specifies an exporter for transmitting Custom Metrics and Log Events to AWS CloudWatch. ### options @@ -65,13 +49,13 @@ options: stream: zilla-log-stream ``` -### options.metrics +#### options.metrics > `object` Configuration for transmitting custom metric data points to Amazon CloudWatch. -#### metrics.namespace\* +##### metrics.namespace\* > `string` @@ -79,25 +63,25 @@ The namespace for the metric data. To avoid conflicts with Amazon Web Services service namespaces, you should not specify a namespace that begins with `AWS/`. -#### metrics.interval +##### metrics.interval > `integer` Interval in seconds to push data to the Amazon CloudWatch. Default: 30 seconds. -### options.logs +#### options.logs > `object` Configuration for transmitting log events to Amazon CloudWatch. -#### logs.group\* +##### logs.group\* > `string` The name of the log group. -#### logs.stream\* +##### logs.stream\* > `string` diff --git a/src/reference/config/telemetry/exporters/exporter-otlp.md b/src/reference/config/telemetry/exporters/exporter-otlp.md index 7b326c5f..8b7610b1 100644 --- a/src/reference/config/telemetry/exporters/exporter-otlp.md +++ b/src/reference/config/telemetry/exporters/exporter-otlp.md @@ -21,25 +21,10 @@ exporters: - metrics endpoint: protocol: http - location: http://otlp-collector:4318/v1/metrics + location: http://otlp-collector:4318 ``` -## Configuration - -:::: note Properties - -- [options\*](#options) - - [options.interval](#options-interval) - - [options.signals](#options-signals) - - [options.endpoint\*](#options-endpoint) - - [endpoint.protocol](#endpoint-protocol) - - [endpoint.location\*](#endpoint-location) - -::: right -\* required -::: - -:::: +## Configuration (\* required) ### options @@ -55,7 +40,7 @@ options: - metrics endpoint: protocol: http - location: http://otlp-collector:4318/v1/metrics + location: http://otlp-collector:4318 ``` #### options.interval diff --git a/src/reference/config/telemetry/exporters/exporter-prometheus.md b/src/reference/config/telemetry/exporters/exporter-prometheus.md index 6b5714ed..86b285f2 100644 --- a/src/reference/config/telemetry/exporters/exporter-prometheus.md +++ b/src/reference/config/telemetry/exporters/exporter-prometheus.md @@ -22,21 +22,7 @@ exporters: path: /metrics ``` -## Configuration - -:::: note Properties - -- [options](#options) - - [options.endpoints](#options-endpoints) - - [endpoints\[\].scheme](#endpoints-scheme) - - [endpoints\[\].port](#endpoints-port) - - [endpoints\[\].path](#endpoints-path) - -::: right -\* required -::: - -:::: +## Configuration (\* required) ### options diff --git a/src/reference/config/telemetry/exporters/exporter-syslog.md b/src/reference/config/telemetry/exporters/exporter-syslog.md index 56260c73..e1aaeb13 100644 --- a/src/reference/config/telemetry/exporters/exporter-syslog.md +++ b/src/reference/config/telemetry/exporters/exporter-syslog.md @@ -48,23 +48,7 @@ exporters: - syslog ``` -## Configuration - -:::: note Properties - -- [vault](#vault) -- [options\*](#options) - - [options.host\*](#options-host) - - [options.port\*](#options-port) - - [options.protocol\*](#options-protocol) - - [options.trust](#options-trust) - - [options.trustcacerts](#options-trustcacerts) - -::: right -\* required -::: - -:::: +## Configuration (\* required) ### vault diff --git a/src/reference/config/vaults/vault-aws.md b/src/reference/config/vaults/vault-aws.md index 52b27424..478cc409 100644 --- a/src/reference/config/vaults/vault-aws.md +++ b/src/reference/config/vaults/vault-aws.md @@ -24,29 +24,14 @@ server: resourcegroupstaggingapi: http://localhost:8000/resourcegroupstaggingapi ``` -## Summary +## Configuration (\* required) + +### type: aws\* Defines a vault remotely accessing AWS services from an EC2 instance. This is typically combined with `tls` binding `vault` property, referencing resources such as `secrets` by Amazon Resource Names (ARNs). -## Configuration - -:::: note Properties - -- [options](#options) -- [options.overrides](#options-overrides) - - [overrides.acm](#overrides-acm) - - [overrides.acmpca](#overrides-acmpca) - - [overrides.secretsmanager](#overrides-secretsmanager) - - [overrides.resourcegroupstaggingapi](#overrides-resourcegroupstaggingapi) - -::: right -\* required -::: - -:::: - ### options > `object` @@ -62,7 +47,7 @@ options: resourcegroupstaggingapi: http://localhost:8000/resourcegroupstaggingapi ``` -### options.overrides +#### options.overrides > `object` diff --git a/src/reference/config/vaults/vault-filesystem.md b/src/reference/config/vaults/vault-filesystem.md index 1d020b9b..0d765dea 100644 --- a/src/reference/config/vaults/vault-filesystem.md +++ b/src/reference/config/vaults/vault-filesystem.md @@ -19,7 +19,9 @@ server: password: ${{env.KEYS_PASSWORD}} ``` -## Summary +## Configuration (\* required) + +### type: filesystem\* Defines a vault stored on the local filesystem. @@ -31,30 +33,6 @@ The [trust](#options-trust) option is used to verify identity of the remote peer The [signers](#options-signers) option is used to challenge for mutual authentication in a TLS handshake. -## Configuration - -:::: note Properties - -- [options](#options) -- [options.keys](#options-keys) - - [keys.store\*](#keys-store) - - [keys.type](#keys-type) - - [keys.password](#keys-password) -- [options.trust](#options-trust) - - [trust.store\*](#trust-store) - - [trust.type](#trust-type) - - [trust.password](#trust-password) -- [options.signers](#options-signers) - - [signers.store\*](#signers-store) - - [signers.type](#signers-type) - - [signers.password](#signers-password) - -::: right -\* required -::: - -:::: - ### options > `object` @@ -69,76 +47,76 @@ options: password: ${{env.KEYS_PASSWORD}} ``` -### options.keys +#### options.keys > `object` Private keys. -#### keys.store\* +##### keys.store\* > `string` Relative path to keystore. -#### keys.type +##### keys.type > `string` Keystore type,\ defaults to `"pkcs12"` -#### keys.password +##### keys.password > `string` Keystore password. -### options.trust +#### options.trust > `object` Trust certificates. -#### trust.store\* +##### trust.store\* > `string` Relative path to keystore. -#### trust.type +##### trust.type > `string` Keystore type,\ defaults to `"pkcs12"` -#### trust.password +##### trust.password > `string` Keystore password. -### options.signers +#### options.signers > `object` Signer certificates. -#### signers.store\* +##### signers.store\* > `string` Relative path to keystore. -#### signers.type +##### signers.type > `string` Keystore type.\ defaults to `"pkcs12"` -#### signers.password +##### signers.password > `string` diff --git a/src/tutorials/grpc/zilla.yaml b/src/tutorials/grpc/zilla.yaml index 0c7bb09a..4025591b 100644 --- a/src/tutorials/grpc/zilla.yaml +++ b/src/tutorials/grpc/zilla.yaml @@ -1,4 +1,11 @@ name: gRPC-example +catalogs: + host_filesystem: + type: filesystem + options: + subjects: + echo: + path: proto/echo.proto bindings: # Proxy service entrypoint north_tcp_server: @@ -22,9 +29,9 @@ bindings: north_grpc_server: type: grpc kind: server - options: - services: - - proto/echo.proto + catalog: + host_filesystem: + - subject: echo routes: - when: - method: example.EchoService/* From e7d8eb311dd74898269cd24d78a59400ac0e1759 Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 20 Aug 2024 10:56:07 -0400 Subject: [PATCH 09/54] rework reference section structure --- .../config/bindings/.partials/cataloged.md | 37 ++++ .../config/bindings/.partials/exit.md | 9 + .../bindings/.partials/telemetry-grpc.md | 18 ++ src/reference/config/bindings/binding-grpc.md | 184 ------------------ .../config/bindings/grpc/.partials/options.md | 21 ++ .../config/bindings/grpc/.partials/routes.md | 83 ++++++++ src/reference/config/bindings/grpc/README.md | 53 +++++ src/reference/config/bindings/grpc/client.md | 33 ++++ src/reference/config/bindings/grpc/server.md | 45 +++++ 9 files changed, 299 insertions(+), 184 deletions(-) create mode 100644 src/reference/config/bindings/.partials/cataloged.md create mode 100644 src/reference/config/bindings/.partials/exit.md create mode 100644 src/reference/config/bindings/.partials/telemetry-grpc.md delete mode 100644 src/reference/config/bindings/binding-grpc.md create mode 100644 src/reference/config/bindings/grpc/.partials/options.md create mode 100644 src/reference/config/bindings/grpc/.partials/routes.md create mode 100644 src/reference/config/bindings/grpc/README.md create mode 100644 src/reference/config/bindings/grpc/client.md create mode 100644 src/reference/config/bindings/grpc/server.md diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md new file mode 100644 index 00000000..8cce1cd8 --- /dev/null +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -0,0 +1,37 @@ +### catalog\* + +> `object` + +To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. + +> `id` +----- +> `strategy` +> `version` +----- +> `subject` +> `version` + +#### catalog.strategy + +> `enum` [ "topic" ] + +To determine the subject based on the specified strategy + +#### catalog.subject + +> `string` + +Unique identifier for schema categorization in the catalog. + +#### catalog.version + +> `string` | Default: `"latest"` + +Specific iteration or version of a registered schema in the defined catalog. + +#### catalog.id + +> `integer` + +Define specific schema id to refer from catalog. diff --git a/src/reference/config/bindings/.partials/exit.md b/src/reference/config/bindings/.partials/exit.md new file mode 100644 index 00000000..f1c50ef7 --- /dev/null +++ b/src/reference/config/bindings/.partials/exit.md @@ -0,0 +1,9 @@ +### exit + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +exit: echo_server +``` diff --git a/src/reference/config/bindings/.partials/telemetry-grpc.md b/src/reference/config/bindings/.partials/telemetry-grpc.md new file mode 100644 index 00000000..b593a572 --- /dev/null +++ b/src/reference/config/bindings/.partials/telemetry-grpc.md @@ -0,0 +1,18 @@ +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "grpc" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - grpc.* +``` diff --git a/src/reference/config/bindings/binding-grpc.md b/src/reference/config/bindings/binding-grpc.md deleted file mode 100644 index d1d5d54c..00000000 --- a/src/reference/config/bindings/binding-grpc.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -shortTitle: grpc -description: Zilla runtime grpc binding -category: - - Binding -tag: - - Server - - Client ---- - -# grpc Binding - -Zilla runtime grpc binding. - -## Configuration (\* required) - -### type: grpc\* - -Defines a binding with `grpc` protocol support, with `server` or `client` behavior. - -### kind: server - -The `server` kind `grpc` binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. - -```yaml {2} -grpc_server: - type: grpc - kind: server - catalog: - host_filesystem: - - subject: echo - routes: - - when: - - method: example.EchoService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl - exit: echo_server -``` - -### kind: client - -The `client` kind `grpc` binding adapts `grpc` request-response streams to `http` request-response streams. - - -### options - -> `object` - -`grpc`-specific options. -```yaml {2} -grpc_client: - type: grpc - kind: client - exit: http_client -``` - -#### options.services - -::: warning Deprecated -This property will be removed in a future release. To access '.proto' files from the filesystem, use the [filesystem](../catalogs/catalog-filesystem.md) catalog instead. -::: - -> `array` of `string` - -Protobuf service definition filenames, typically with `.proto` filename extension. -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: echo_server -``` - -### routes - -> `array` of `object` - -Conditional `grpc`-specific routes. - -```yaml -routes: - - guarded: - my_guard: - - echo:messages - when: - - method: example.EchoService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl - exit: echo_server -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -Roles required by named guard. - -```yaml -routes: - - guarded: - my_guard: - - echo:messages -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - when: - - method: example.EchoService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl -``` - -##### when[].method - -> `string` - -gRPC service method name, such as `example.EchoService/EchoUnary`, or service method pattern such as `example.EchoService/*`. - -##### when[].metadata - -> `map` of `name: value` properties - -Metadata header name value pairs (all match). - -Each metadata header value can be `string` or `object` with `base64` property. - -##### metadata.base64 - -> `string` - -Base64 encoded value for binary metadata header. - -#### routes[].exit\* - -> `string` - -Routed exit binding when conditional route matches. - -```yaml -routes: - - when: - ... - exit: echo_server -``` - -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "grpc" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - grpc.* -``` - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/grpc/.partials/options.md b/src/reference/config/bindings/grpc/.partials/options.md new file mode 100644 index 00000000..16f3b9a3 --- /dev/null +++ b/src/reference/config/bindings/grpc/.partials/options.md @@ -0,0 +1,21 @@ +### options + +> `object` + +`grpc`-specific options. +```yaml {2} +grpc_client: + type: grpc + kind: client + exit: http_client +``` + +#### options.services + +::: warning Deprecated +This property will be removed in a future release. To access '.proto' files from the filesystem, use the [filesystem](./../catalogs/catalog-filesystem.md) catalog instead. +::: + +> `array` of `string` + +Protobuf service definition filenames, typically with `.proto` filename extension. diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md new file mode 100644 index 00000000..f7587ba2 --- /dev/null +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -0,0 +1,83 @@ + +### routes + +> `array` of `object` + +Conditional `grpc`-specific routes. + +```yaml +routes: + - guarded: + my_guard: + - echo:messages + when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: echo_server +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +Roles required by named guard. + +```yaml +routes: + - guarded: + my_guard: + - echo:messages +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl +``` + +##### when[].method + +> `string` + +gRPC service method name, such as `example.EchoService/EchoUnary`, or service method pattern such as `example.EchoService/*`. + +##### when[].metadata + +> `map` of `name: value` properties + +Metadata header name value pairs (all match). + +Each metadata header value can be `string` or `object` with `base64` property. + +##### metadata.base64 + +> `string` + +Base64 encoded value for binary metadata header. + +#### routes[].exit\* + +> `string` + +Routed exit binding when conditional route matches. + +```yaml +routes: + - when: + ... + exit: echo_server +``` diff --git a/src/reference/config/bindings/grpc/README.md b/src/reference/config/bindings/grpc/README.md new file mode 100644 index 00000000..6ae7cbef --- /dev/null +++ b/src/reference/config/bindings/grpc/README.md @@ -0,0 +1,53 @@ +--- +redirectFrom: /reference/config/bindings/binding-grpc.html +dir: + collapsible: false + link: true +shortTitle: grpc +description: Zilla runtime grpc binding +category: + - Binding +tag: + - Server + - Client +--- + +# grpc Binding + +Defines a binding with `grpc` protocol support, with `server` or `client` behavior. + +## server + +The `server` kind `grpc` binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. + +> [Full Config](./server.md) + +```yaml {3} +grpc_server: + type: grpc + kind: server + catalog: + host_filesystem: + - subject: echo + routes: + - when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: echo_server +``` + +## client + +The `client` kind `grpc` binding adapts `grpc` request-response streams to `http` request-response streams. + +> [Full Config](./client.md) + +```yaml {3} +grpc_server: + type: grpc + kind: client + exit: tcp_server +``` diff --git a/src/reference/config/bindings/grpc/client.md b/src/reference/config/bindings/grpc/client.md new file mode 100644 index 00000000..dc8b421e --- /dev/null +++ b/src/reference/config/bindings/grpc/client.md @@ -0,0 +1,33 @@ +--- +shortTitle: grpc client +description: Zilla runtime grpc client binding +category: + - Binding +tag: + - Client +--- + +# grpc client Binding + +The grpc client binding adapts `grpc` request-response streams to `http` request-response streams. + +The `type:grpc kind:client` binding adapts `grpc` request-response streams to `http` request-response streams. + +```yaml +grpc_server: + type: grpc + kind: client + exit: tcp_server +``` + +## Configuration (\* required) + + + + + +--- + +::: right +\* required +::: diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md new file mode 100644 index 00000000..b0274562 --- /dev/null +++ b/src/reference/config/bindings/grpc/server.md @@ -0,0 +1,45 @@ +--- +shortTitle: grpc server +description: Zilla runtime grpc server binding +category: + - Binding +tag: + - Server +--- + +# grpc server Binding + +The grpc server binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. + +The `type:grpc kind:server` binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. + +```yaml {4-6,9-13} +grpc_server: + type: grpc + kind: server + catalog: + host_filesystem: + - subject: echo + routes: + - when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: echo_server +``` + +## Configuration (\* required) + + + + + + + +--- + +::: right +\* required +::: From 33c00bcd7f502bfa03c0bc692333738d5f188afb Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 21 Aug 2024 10:03:23 -0400 Subject: [PATCH 10/54] update reference locations and change the parser to compare individual kinds --- .check-schema/index.js | 98 ++++++++++------- src/how-tos/mqtt/mqtt.kafka.broker.md | 2 +- .../config/bindings/.partials/cataloged.md | 2 +- .../config/bindings/.partials/telemetry.md | 1 + .../bindings/amqp/.partials/server.yaml | 0 src/reference/config/bindings/amqp/README.md | 38 +++++++ .../{binding-amqp.md => amqp/server.md} | 53 ++------- .../bindings/asyncapi/.partials/client.yaml | 0 .../bindings/asyncapi/.partials/proxy.yaml | 0 .../bindings/asyncapi/.partials/server.yaml | 0 .../README.md} | 24 +--- .../config/bindings/asyncapi/client.md | 7 ++ .../config/bindings/asyncapi/proxy.md | 7 ++ .../config/bindings/asyncapi/server.md | 7 ++ .../bindings/echo/.partials/server.yaml | 0 .../{binding-echo.md => echo/README.md} | 22 +--- src/reference/config/bindings/echo/server.md | 7 ++ .../config/bindings/fan/.partials/server.yaml | 0 .../{binding-fan.md => fan/README.md} | 24 +--- src/reference/config/bindings/fan/server.md | 7 ++ .../bindings/filesyste/.partials/server.yaml | 0 .../README.md} | 24 +--- .../config/bindings/filesyste/server.md | 7 ++ .../bindings/grpc-kafka/.partials/proxy.yaml | 45 ++++++++ .../config/bindings/grpc-kafka/README.md | 26 +++++ .../proxy.md} | 93 ++-------------- .../bindings/grpc/.partials/client.yaml | 4 + .../config/bindings/grpc/.partials/routes.md | 2 +- .../bindings/grpc/.partials/server.yaml | 14 +++ src/reference/config/bindings/grpc/client.md | 5 +- src/reference/config/bindings/grpc/server.md | 15 +-- .../http-filesyste/.partials/proxy.yaml | 0 .../README.md} | 8 +- .../config/bindings/http-filesyste/proxy.md | 7 ++ .../bindings/http-kafka/.partials/proxy.yaml | 0 .../README.md} | 8 +- .../config/bindings/http-kafka/proxy.md | 7 ++ .../bindings/http/.partials/client.yaml | 0 .../bindings/http/.partials/server.yaml | 0 .../{binding-http.md => http/README.md} | 103 +++++++++++++++++- src/reference/config/bindings/http/client.md | 7 ++ src/reference/config/bindings/http/server.md | 7 ++ .../kafka-grpc/.partials/remote_server.yaml | 0 .../README.md} | 8 +- .../bindings/kafka-grpc/remote_server.md | 7 ++ .../bindings/kafka-proxy/.partials/proxy.yaml | 0 .../README.md} | 24 +--- .../config/bindings/kafka-proxy/proxy.md | 7 ++ .../kafka/.partials/cache_client.yaml | 0 .../kafka/.partials/cache_server.yaml | 0 .../bindings/kafka/.partials/client.yaml | 0 .../{binding-kafka.md => kafka/README.md} | 24 +--- .../config/bindings/kafka/cache_client.md | 7 ++ .../config/bindings/kafka/cache_server.md | 7 ++ src/reference/config/bindings/kafka/client.md | 7 ++ .../bindings/mqtt-kafka/.partials/proxy.yaml | 0 .../README.md} | 26 ++--- .../config/bindings/mqtt-kafka/proxy.md | 7 ++ .../bindings/mqtt/.partials/client.yaml | 0 .../bindings/mqtt/.partials/server.yaml | 0 .../{binding-mqtt.md => mqtt/README.md} | 28 ++--- src/reference/config/bindings/mqtt/client.md | 7 ++ src/reference/config/bindings/mqtt/server.md | 7 ++ .../openapi-asyncapi/.partials/proxy.yaml | 0 .../README.md} | 26 ++--- .../config/bindings/openapi-asyncapi/proxy.md | 7 ++ .../bindings/openapi/.partials/client.yaml | 0 .../bindings/openapi/.partials/server.yaml | 0 .../{binding-openapi.md => openapi/README.md} | 26 ++--- .../config/bindings/openapi/client.md | 7 ++ .../config/bindings/openapi/server.md | 7 ++ .../bindings/proxy/.partials/client.yaml | 0 .../bindings/proxy/.partials/server.yaml | 0 .../{binding-proxy.md => proxy/README.md} | 28 ++--- src/reference/config/bindings/proxy/client.md | 7 ++ src/reference/config/bindings/proxy/server.md | 7 ++ .../bindings/sse-kafka/.partials/proxy.yaml | 0 .../README.md} | 8 +- .../config/bindings/sse-kafka/proxy.md | 7 ++ .../config/bindings/sse/.partials/client.yaml | 0 .../config/bindings/sse/.partials/server.yaml | 0 .../{binding-sse.md => sse/README.md} | 10 +- src/reference/config/bindings/sse/client.md | 7 ++ src/reference/config/bindings/sse/server.md | 7 ++ .../config/bindings/tcp/.partials/client.yaml | 0 .../config/bindings/tcp/.partials/server.yaml | 0 .../{binding-tcp.md => tcp/README.md} | 28 ++--- src/reference/config/bindings/tcp/client.md | 7 ++ src/reference/config/bindings/tcp/server.md | 7 ++ .../config/bindings/tls/.partials/client.yaml | 0 .../config/bindings/tls/.partials/proxy.yaml | 0 .../config/bindings/tls/.partials/server.yaml | 0 .../{binding-tls.md => tls/README.md} | 24 +--- src/reference/config/bindings/tls/client.md | 7 ++ src/reference/config/bindings/tls/proxy.md | 7 ++ src/reference/config/bindings/tls/server.md | 7 ++ .../config/bindings/ws/.partials/client.yaml | 0 .../config/bindings/ws/.partials/server.yaml | 0 .../bindings/{binding-ws.md => ws/README.md} | 28 ++--- src/reference/config/bindings/ws/client.md | 7 ++ src/reference/config/bindings/ws/server.md | 7 ++ 101 files changed, 665 insertions(+), 465 deletions(-) create mode 100644 src/reference/config/bindings/.partials/telemetry.md create mode 100644 src/reference/config/bindings/amqp/.partials/server.yaml create mode 100644 src/reference/config/bindings/amqp/README.md rename src/reference/config/bindings/{binding-amqp.md => amqp/server.md} (71%) create mode 100644 src/reference/config/bindings/asyncapi/.partials/client.yaml create mode 100644 src/reference/config/bindings/asyncapi/.partials/proxy.yaml create mode 100644 src/reference/config/bindings/asyncapi/.partials/server.yaml rename src/reference/config/bindings/{binding-asyncapi.md => asyncapi/README.md} (95%) create mode 100644 src/reference/config/bindings/asyncapi/client.md create mode 100644 src/reference/config/bindings/asyncapi/proxy.md create mode 100644 src/reference/config/bindings/asyncapi/server.md create mode 100644 src/reference/config/bindings/echo/.partials/server.yaml rename src/reference/config/bindings/{binding-echo.md => echo/README.md} (70%) create mode 100644 src/reference/config/bindings/echo/server.md create mode 100644 src/reference/config/bindings/fan/.partials/server.yaml rename src/reference/config/bindings/{binding-fan.md => fan/README.md} (79%) create mode 100644 src/reference/config/bindings/fan/server.md create mode 100644 src/reference/config/bindings/filesyste/.partials/server.yaml rename src/reference/config/bindings/{binding-filesystem.md => filesyste/README.md} (82%) create mode 100644 src/reference/config/bindings/filesyste/server.md create mode 100644 src/reference/config/bindings/grpc-kafka/.partials/proxy.yaml create mode 100644 src/reference/config/bindings/grpc-kafka/README.md rename src/reference/config/bindings/{binding-grpc-kafka.md => grpc-kafka/proxy.md} (80%) create mode 100644 src/reference/config/bindings/grpc/.partials/client.yaml create mode 100644 src/reference/config/bindings/grpc/.partials/server.yaml create mode 100644 src/reference/config/bindings/http-filesyste/.partials/proxy.yaml rename src/reference/config/bindings/{binding-http-filesystem.md => http-filesyste/README.md} (91%) create mode 100644 src/reference/config/bindings/http-filesyste/proxy.md create mode 100644 src/reference/config/bindings/http-kafka/.partials/proxy.yaml rename src/reference/config/bindings/{binding-http-kafka.md => http-kafka/README.md} (98%) create mode 100644 src/reference/config/bindings/http-kafka/proxy.md create mode 100644 src/reference/config/bindings/http/.partials/client.yaml create mode 100644 src/reference/config/bindings/http/.partials/server.yaml rename src/reference/config/bindings/{binding-http.md => http/README.md} (83%) create mode 100644 src/reference/config/bindings/http/client.md create mode 100644 src/reference/config/bindings/http/server.md create mode 100644 src/reference/config/bindings/kafka-grpc/.partials/remote_server.yaml rename src/reference/config/bindings/{binding-kafka-grpc.md => kafka-grpc/README.md} (95%) create mode 100644 src/reference/config/bindings/kafka-grpc/remote_server.md create mode 100644 src/reference/config/bindings/kafka-proxy/.partials/proxy.yaml rename src/reference/config/bindings/{binding-kafka-proxy.md => kafka-proxy/README.md} (88%) create mode 100644 src/reference/config/bindings/kafka-proxy/proxy.md create mode 100644 src/reference/config/bindings/kafka/.partials/cache_client.yaml create mode 100644 src/reference/config/bindings/kafka/.partials/cache_server.yaml create mode 100644 src/reference/config/bindings/kafka/.partials/client.yaml rename src/reference/config/bindings/{binding-kafka.md => kafka/README.md} (94%) create mode 100644 src/reference/config/bindings/kafka/cache_client.md create mode 100644 src/reference/config/bindings/kafka/cache_server.md create mode 100644 src/reference/config/bindings/kafka/client.md create mode 100644 src/reference/config/bindings/mqtt-kafka/.partials/proxy.yaml rename src/reference/config/bindings/{binding-mqtt-kafka.md => mqtt-kafka/README.md} (93%) create mode 100644 src/reference/config/bindings/mqtt-kafka/proxy.md create mode 100644 src/reference/config/bindings/mqtt/.partials/client.yaml create mode 100644 src/reference/config/bindings/mqtt/.partials/server.yaml rename src/reference/config/bindings/{binding-mqtt.md => mqtt/README.md} (92%) create mode 100644 src/reference/config/bindings/mqtt/client.md create mode 100644 src/reference/config/bindings/mqtt/server.md create mode 100644 src/reference/config/bindings/openapi-asyncapi/.partials/proxy.yaml rename src/reference/config/bindings/{binding-openapi-asyncapi.md => openapi-asyncapi/README.md} (90%) create mode 100644 src/reference/config/bindings/openapi-asyncapi/proxy.md create mode 100644 src/reference/config/bindings/openapi/.partials/client.yaml create mode 100644 src/reference/config/bindings/openapi/.partials/server.yaml rename src/reference/config/bindings/{binding-openapi.md => openapi/README.md} (94%) create mode 100644 src/reference/config/bindings/openapi/client.md create mode 100644 src/reference/config/bindings/openapi/server.md create mode 100644 src/reference/config/bindings/proxy/.partials/client.yaml create mode 100644 src/reference/config/bindings/proxy/.partials/server.yaml rename src/reference/config/bindings/{binding-proxy.md => proxy/README.md} (87%) create mode 100644 src/reference/config/bindings/proxy/client.md create mode 100644 src/reference/config/bindings/proxy/server.md create mode 100644 src/reference/config/bindings/sse-kafka/.partials/proxy.yaml rename src/reference/config/bindings/{binding-sse-kafka.md => sse-kafka/README.md} (95%) create mode 100644 src/reference/config/bindings/sse-kafka/proxy.md create mode 100644 src/reference/config/bindings/sse/.partials/client.yaml create mode 100644 src/reference/config/bindings/sse/.partials/server.yaml rename src/reference/config/bindings/{binding-sse.md => sse/README.md} (91%) create mode 100644 src/reference/config/bindings/sse/client.md create mode 100644 src/reference/config/bindings/sse/server.md create mode 100644 src/reference/config/bindings/tcp/.partials/client.yaml create mode 100644 src/reference/config/bindings/tcp/.partials/server.yaml rename src/reference/config/bindings/{binding-tcp.md => tcp/README.md} (86%) create mode 100644 src/reference/config/bindings/tcp/client.md create mode 100644 src/reference/config/bindings/tcp/server.md create mode 100644 src/reference/config/bindings/tls/.partials/client.yaml create mode 100644 src/reference/config/bindings/tls/.partials/proxy.yaml create mode 100644 src/reference/config/bindings/tls/.partials/server.yaml rename src/reference/config/bindings/{binding-tls.md => tls/README.md} (92%) create mode 100644 src/reference/config/bindings/tls/client.md create mode 100644 src/reference/config/bindings/tls/proxy.md create mode 100644 src/reference/config/bindings/tls/server.md create mode 100644 src/reference/config/bindings/ws/.partials/client.yaml create mode 100644 src/reference/config/bindings/ws/.partials/server.yaml rename src/reference/config/bindings/{binding-ws.md => ws/README.md} (87%) create mode 100644 src/reference/config/bindings/ws/client.md create mode 100644 src/reference/config/bindings/ws/server.md diff --git a/.check-schema/index.js b/.check-schema/index.js index 10770765..00dcc3dc 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -9,7 +9,7 @@ const main = async () => { var errors = []; function getPageProps(name, tokens) { - var foundHeadings = [name]; + var foundHeadings = []; tokens .filter(({ depth, type }) => type == "heading" && depth == 3) .forEach((t) => { @@ -34,8 +34,8 @@ const main = async () => { function getObjProps(attr, obj, reqKeys) { var props = []; // console.log(attr, Object.keys(obj || {})); - Object.keys(obj || {}).forEach((k) => { - var i = obj[k]; + Object.entries(obj).forEach(([k, i]) => { + // console.log(k, JSON.stringify(i, null, 4)); if (!!i.deprecated) return //recurse @@ -79,7 +79,6 @@ const main = async () => { } var req = !!reqKeys?.includes(k); var path = [attr, k].filter((s) => !!s).join("."); - // console.log(`${path}: ${i.const}`) if (i.properties) { props.push([path, "object", req, i.const]); } else if (i.additionalProperties) { @@ -119,54 +118,75 @@ const main = async () => { return props; } - var sections = ["binding", "guard", "vault", "catalog"] - .map((type) => - schema.$defs[type]?.allOf.map(({ if: fi, then }) => ({ - type, - folder: `${type}s`, - name: fi.properties.type.const, - props: { - [fi.properties.type.const]: { - ...(then || {}), - required: [...(schema.$defs[type].required || []), ...(then.required || [])], - oneOf: [...(schema.$defs[type].oneOf || []), ...(then.oneOf || [])], - properties: {...(schema.$defs[type].properties || {}), ...(then.properties || {})}, - } + var sections = Object.entries({ + guards: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], + vaults: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], + catalogs: schema.properties.catalogs.patternProperties[Object.keys(schema.properties.catalogs.patternProperties)[0]], + }).map(([section, props]) => + props?.allOf?.map(({ if: fi, then }) => ({ + folder: section, + name: fi.properties.type.const || fi.properties.type.enum?.[0], + properties: { + ...(props?.properties || {}), + ...(then.properties || {}), + required: [...(props?.required || []), ...(then.required || [])], + oneOf: [...(props?.oneOf || []), ...(then.oneOf || [])], + }, + })) + ).flat(1); + + var bindings = schema.properties.bindings.patternProperties[Object.keys(schema.properties.bindings.patternProperties)[0]]; + bindings.allOf?.forEach(({ if: fi, then }) => { + var folder = `bindings.${fi.properties.type.const}`; + if (then.oneOf) { + sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf }) => ({ + folder, + name: properties.kind.const, + properties: { + ...(then.properties || {}), + ...(properties || {}), + required: [ ...(then.required || []), ...(required || []) ], + oneOf: [ ...(then.oneOf || []), ...(oneOf || []) ], + anyOf: [ ...(then.anyOf || []), ...(anyOf || []) ], }, - })) - ) - .flat(1); + }))); + } else { + sections.push({ + folder, + name: then.properties.kind.enum[0], + properties: { + ...(then || {}), + } + }); + } + }) + var exporterProps = schema.properties.telemetry.properties.exporters.patternProperties[Object.keys(schema.properties.telemetry.properties.exporters.patternProperties)[0]] sections.push( - ...schema.$defs.telemetry.exporter?.allOf.map(({ if: fi, then }) => ({ - type: "exporter", + ...exporterProps?.allOf?.map(({ if: fi, then }) => ({ folder: "telemetry.exporters", name: fi.properties.type.const, - props: { - [fi.properties.type.const]: { - ...(schema.$defs.telemetry.exporter || {}), ...(then || {}), - } - }, + properties: then, })) ); + // console.log("sections", sections); // sections.push( // ...schema.$defs.converter.model?.allOf.map(({ if: fi, then }) => ({ // type: "model", // folder: "models", // name: fi.properties.model.const, - // props:{ [fi.properties.model.const]: { + // properties:{ [fi.properties.model.const]: { // ...(schema.$defs.converter.model || {}), ...(then || {}) , // }}, // })) // ); - sections.forEach(({ type, folder, name, props }) => { - delete props.type; - var attrs = getObjProps(null, props, []); - var filename = `src/reference/config/${folder.replaceAll(".", "/")}/${type - .split(".") - .findLast((n) => !!n)}-${name}.md`; - // console.log(filename, JSON.stringify(props, null, 4)) + sections.forEach(({ folder, name, properties }) => { + delete properties.type; + delete properties.kind; + var filename = `src/reference/config/${folder.replaceAll(".", "/")}/${name}.md`; + console.log(filename, properties); + var attrs = getObjProps(null, properties, []); if ( fs.existsSync(filename) ) { @@ -177,7 +197,7 @@ const main = async () => { ) ).sort(); var sorted = attrs.map((a) => a[0]).sort(); - // console.log("findings", type, name, sorted, headers); + console.log("findings", folder, name, sorted, headers); var addList = sorted.filter((x) => !headers.includes(x) ); @@ -185,8 +205,8 @@ const main = async () => { !sorted.includes(x) && !["routes[].exit", "routes[].guarded"].includes(x) ); - if (addList.length) console.log(type, name, "add", addList); - if (removeList.length) console.log(type, name, "remove", removeList); + if (addList.length) console.log(folder, name, "add", addList); + if (removeList.length) console.log(folder, name, "remove", removeList); } else { errors.push(`missing ${name}`); } @@ -196,7 +216,7 @@ const main = async () => { // { // type: 'telemetry.metrics', // name: 'grpc', - // props: schema.$defs.telemetry.metrics.items.enum.filter((m) => m.startsWith('grpc')), + // properties: schema.$defs.telemetry.metrics.items.enum.filter((m) => m.startsWith('grpc')), // } // console.log(errors) diff --git a/src/how-tos/mqtt/mqtt.kafka.broker.md b/src/how-tos/mqtt/mqtt.kafka.broker.md index 8192e2a7..a92356a2 100644 --- a/src/how-tos/mqtt/mqtt.kafka.broker.md +++ b/src/how-tos/mqtt/mqtt.kafka.broker.md @@ -172,7 +172,7 @@ Additionally, a route is defined to capture any "device" messages and route them ``` ::: right -[More on When a route matches](../../concepts/bindings.md#when-a-route-matches) +[More on When a route matches](../../../concepts/bindings.md#when-a-route-matches) [More on binding-mqtt-kafka routing](../../reference/config/bindings/binding-mqtt-kafka.md#routes) ::: diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md index 8cce1cd8..0b9275f4 100644 --- a/src/reference/config/bindings/.partials/cataloged.md +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -1,4 +1,4 @@ -### catalog\* +### catalog > `object` diff --git a/src/reference/config/bindings/.partials/telemetry.md b/src/reference/config/bindings/.partials/telemetry.md new file mode 100644 index 00000000..4d497392 --- /dev/null +++ b/src/reference/config/bindings/.partials/telemetry.md @@ -0,0 +1 @@ + diff --git a/src/reference/config/bindings/amqp/.partials/server.yaml b/src/reference/config/bindings/amqp/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/amqp/README.md b/src/reference/config/bindings/amqp/README.md new file mode 100644 index 00000000..878578af --- /dev/null +++ b/src/reference/config/bindings/amqp/README.md @@ -0,0 +1,38 @@ +--- +redirectFrom: /reference/config/bindings/binding-amqp.html +dir: + collapsible: false + link: true +shortTitle: amqp +description: Zilla runtime amqp binding +category: + - Binding +tag: + - Server +--- + +# amqp Binding + +Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. + +::: important Feature is in Incubator +Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! +::: + + +## server + +The `server` kind `amqp` binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. + +```yaml {2} +amqp_server: + type: amqp + kind: server + routes: + - when: + - address: echo + capabilities: send_and_receive + exit: echo_server +``` + +> [Full config](./server.md) diff --git a/src/reference/config/bindings/binding-amqp.md b/src/reference/config/bindings/amqp/server.md similarity index 71% rename from src/reference/config/bindings/binding-amqp.md rename to src/reference/config/bindings/amqp/server.md index a3459ef2..77af1fe1 100644 --- a/src/reference/config/bindings/binding-amqp.md +++ b/src/reference/config/bindings/amqp/server.md @@ -1,33 +1,14 @@ --- -shortTitle: amqp -description: Zilla runtime amqp binding +shortTitle: amqp server category: - Binding tag: - Server --- -# amqp Binding +# amqp server Binding -::: important Feature is in Incubator -Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! -::: - -Zilla runtime amqp binding. - -## Configuration - -::: right -\* required -::: - -### type: amqp\* - -Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. - -### kind: server\* - -The `server` kind `amqp` binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. +The `server` kind `amqp` binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. ```yaml {2} amqp_server: @@ -40,6 +21,10 @@ amqp_server: exit: echo_server ``` +::: important Feature is in Incubator +Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! +::: + ### exit > `string` @@ -116,26 +101,4 @@ routes: exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` - ---- - -::: right -\* required -::: + diff --git a/src/reference/config/bindings/asyncapi/.partials/client.yaml b/src/reference/config/bindings/asyncapi/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/asyncapi/.partials/proxy.yaml b/src/reference/config/bindings/asyncapi/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/asyncapi/.partials/server.yaml b/src/reference/config/bindings/asyncapi/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-asyncapi.md b/src/reference/config/bindings/asyncapi/README.md similarity index 95% rename from src/reference/config/bindings/binding-asyncapi.md rename to src/reference/config/bindings/asyncapi/README.md index ed1951d4..d00495a5 100644 --- a/src/reference/config/bindings/binding-asyncapi.md +++ b/src/reference/config/bindings/asyncapi/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-asyncapi.html +dir: + collapsible: false + link: true shortTitle: asyncapi description: Zilla runtime asyncapi binding category: @@ -328,7 +332,7 @@ messages: mqttMessages > `array` of `object` List of conditions to match this route when adapting `asyncapi` MQTT streams to `asyncapi` Kafka streams. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ##### when[].api-id @@ -388,23 +392,7 @@ Default exit binding. exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md new file mode 100644 index 00000000..59cd83f3 --- /dev/null +++ b/src/reference/config/bindings/asyncapi/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# asyncapi client + +The asyncapi client binding diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md new file mode 100644 index 00000000..301c88b3 --- /dev/null +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# asyncapi proxy + +The asyncapi proxy binding diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md new file mode 100644 index 00000000..fcf6a9fb --- /dev/null +++ b/src/reference/config/bindings/asyncapi/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# asyncapi server + +The asyncapi server binding diff --git a/src/reference/config/bindings/echo/.partials/server.yaml b/src/reference/config/bindings/echo/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-echo.md b/src/reference/config/bindings/echo/README.md similarity index 70% rename from src/reference/config/bindings/binding-echo.md rename to src/reference/config/bindings/echo/README.md index c71bba6a..40948c23 100644 --- a/src/reference/config/bindings/binding-echo.md +++ b/src/reference/config/bindings/echo/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-echo.html +dir: + collapsible: false + link: true shortTitle: echo description: Zilla runtime echo binding category: @@ -27,23 +31,7 @@ This binding supports the `echo` protocol and is run with the `server` behavior. Behaves as an `echo` `server`. -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/echo/server.md b/src/reference/config/bindings/echo/server.md new file mode 100644 index 00000000..45bcb78d --- /dev/null +++ b/src/reference/config/bindings/echo/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# echo server + +The echo server binding diff --git a/src/reference/config/bindings/fan/.partials/server.yaml b/src/reference/config/bindings/fan/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-fan.md b/src/reference/config/bindings/fan/README.md similarity index 79% rename from src/reference/config/bindings/binding-fan.md rename to src/reference/config/bindings/fan/README.md index 4bff6273..ba6f9f71 100644 --- a/src/reference/config/bindings/binding-fan.md +++ b/src/reference/config/bindings/fan/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-fan.html +dir: + collapsible: false + link: true shortTitle: fan description: Zilla runtime fan binding category: @@ -24,7 +28,7 @@ fan_server: Defines a binding with `fan-in` and `fan-out` support, with `server` behavior. -### kind: server\* +### kind: server Behave as an `fan-in` and `fan-out` `server`. The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. @@ -38,23 +42,7 @@ Default exit binding. When the `exit` is an `echo` server binding, the combinati exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/fan/server.md b/src/reference/config/bindings/fan/server.md new file mode 100644 index 00000000..55ea9b91 --- /dev/null +++ b/src/reference/config/bindings/fan/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# fan server + +The fan server binding diff --git a/src/reference/config/bindings/filesyste/.partials/server.yaml b/src/reference/config/bindings/filesyste/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-filesystem.md b/src/reference/config/bindings/filesyste/README.md similarity index 82% rename from src/reference/config/bindings/binding-filesystem.md rename to src/reference/config/bindings/filesyste/README.md index 9695b4f1..3d862d2c 100644 --- a/src/reference/config/bindings/binding-filesystem.md +++ b/src/reference/config/bindings/filesyste/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-filesystem.html +dir: + collapsible: false + link: true shortTitle: filesystem description: Zilla runtime filesystem binding category: @@ -28,7 +32,7 @@ The `server` kind `filesystem` binding provides access to files and directories Behaves as a web server when combined with `tcp,` `tls`, `http` and `http-filesystem` bindings. -### kind: server\* +### kind: server Behave as a `filesystem` `server`. @@ -56,23 +60,7 @@ File system URI or directory name with trailing slash. How to treat symbolic links. -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/filesyste/server.md b/src/reference/config/bindings/filesyste/server.md new file mode 100644 index 00000000..d504edac --- /dev/null +++ b/src/reference/config/bindings/filesyste/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# filesyste server + +The filesyste server binding diff --git a/src/reference/config/bindings/grpc-kafka/.partials/proxy.yaml b/src/reference/config/bindings/grpc-kafka/.partials/proxy.yaml new file mode 100644 index 00000000..f7aa6652 --- /dev/null +++ b/src/reference/config/bindings/grpc-kafka/.partials/proxy.yaml @@ -0,0 +1,45 @@ + grpc_kafka_proxy: + type: grpc-kafka + kind: proxy + options: + idempotency: + metadata: idempotency-key + reliability: + field: 32767 + metadata: last-message-id + correlation: + headers: + service: zilla:service + method: zilla:method + correlation-id: zilla:correlation-id + reply-to: zilla:reply-to + routes: + - when: + - method: example.FanoutService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: kafka_cache_client + with: + capability: fetch + topic: messages + filters: + key: custom-key + headers: + custom-text: custom-value + - when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: kafka_cache_client + with: + capability: produce + topic: requests + acks: leader_only + key: custom-key + overrides: + custom-text: custom-value + reply-to: responses diff --git a/src/reference/config/bindings/grpc-kafka/README.md b/src/reference/config/bindings/grpc-kafka/README.md new file mode 100644 index 00000000..3d4cbbcb --- /dev/null +++ b/src/reference/config/bindings/grpc-kafka/README.md @@ -0,0 +1,26 @@ +--- +redirectFrom: /reference/config/bindings/binding-grpc-kafka.html +dir: + collapsible: false + link: true +shortTitle: grpc-kafka +description: Zilla runtime grpc-kafka binding +category: + - Binding +tag: + - Proxy +--- + +# grpc-kafka Binding + +Zilla runtime grpc-kafka binding. + +## proxy + +Behave as an `grpc-kafka` `proxy`. + +```yaml {3} + +``` + +> [Full Config](./proxy.md) diff --git a/src/reference/config/bindings/binding-grpc-kafka.md b/src/reference/config/bindings/grpc-kafka/proxy.md similarity index 80% rename from src/reference/config/bindings/binding-grpc-kafka.md rename to src/reference/config/bindings/grpc-kafka/proxy.md index b14f8f9e..12f3691e 100644 --- a/src/reference/config/bindings/binding-grpc-kafka.md +++ b/src/reference/config/bindings/grpc-kafka/proxy.md @@ -1,73 +1,16 @@ --- -shortTitle: grpc-kafka -description: Zilla runtime grpc-kafka binding -category: - - Binding -tag: - - Proxy +shortTitle: grpc-kafka proxy --- -# grpc-kafka Binding - -Zilla runtime grpc-kafka binding. - -```yaml {2} -grpc_kafka_proxy: - type: grpc-kafka - kind: proxy - options: - idempotency: - metadata: idempotency-key - reliability: - field: 32767 - metadata: last-message-id - correlation: - headers: - service: zilla:service - method: zilla:method - correlation-id: zilla:correlation-id - reply-to: zilla:reply-to - routes: - - when: - - method: example.FanoutService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl - exit: kafka_cache_client - with: - capability: fetch - topic: messages - filters: - key: custom-key - headers: - custom-text: custom-value - - when: - - method: example.EchoService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl - exit: kafka_cache_client - with: - capability: produce - topic: requests - acks: leader_only - key: custom-key - overrides: - custom-text: custom-value - reply-to: responses -``` - -## Configuration (\* required) +# grpc-kafka proxy Binding -### type: grpc-kafka\* +The grpc-kafka proxy binding adapts `grpc` request-response streams to `kafka` topic streams. -The `proxy` kind `grpc-kafka` binding adapts `grpc` request-response streams to `kafka` topic streams. - -### kind: proxy\* +```yaml {3} + +``` -Behave as an `grpc-kafka` `proxy`. +## Configuration (\* required) ### options @@ -219,7 +162,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `grpc` request-response streams to `kafka` topic streams. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: @@ -379,25 +322,7 @@ The Kafka message headers to inject with each message. The name of the Kafka topic for correlated responses. -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "grpc" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - grpc.* -``` - + --- ::: right diff --git a/src/reference/config/bindings/grpc/.partials/client.yaml b/src/reference/config/bindings/grpc/.partials/client.yaml new file mode 100644 index 00000000..ee2cf3ff --- /dev/null +++ b/src/reference/config/bindings/grpc/.partials/client.yaml @@ -0,0 +1,4 @@ + grpc_server: + type: grpc + kind: client + exit: tcp_server diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index f7587ba2..587b53a0 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -37,7 +37,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/grpc/.partials/server.yaml b/src/reference/config/bindings/grpc/.partials/server.yaml new file mode 100644 index 00000000..15c414bd --- /dev/null +++ b/src/reference/config/bindings/grpc/.partials/server.yaml @@ -0,0 +1,14 @@ + grpc_server: + type: grpc + kind: server + catalog: + host_filesystem: + - subject: echo + routes: + - when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: echo_server diff --git a/src/reference/config/bindings/grpc/client.md b/src/reference/config/bindings/grpc/client.md index dc8b421e..899194cb 100644 --- a/src/reference/config/bindings/grpc/client.md +++ b/src/reference/config/bindings/grpc/client.md @@ -14,10 +14,7 @@ The grpc client binding adapts `grpc` request-response streams to `http` request The `type:grpc kind:client` binding adapts `grpc` request-response streams to `http` request-response streams. ```yaml -grpc_server: - type: grpc - kind: client - exit: tcp_server + ``` ## Configuration (\* required) diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index b0274562..867bc665 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -14,20 +14,7 @@ The grpc server binding adapts `http` request-response streams to `grpc` request The `type:grpc kind:server` binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. ```yaml {4-6,9-13} -grpc_server: - type: grpc - kind: server - catalog: - host_filesystem: - - subject: echo - routes: - - when: - - method: example.EchoService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl - exit: echo_server + ``` ## Configuration (\* required) diff --git a/src/reference/config/bindings/http-filesyste/.partials/proxy.yaml b/src/reference/config/bindings/http-filesyste/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-http-filesystem.md b/src/reference/config/bindings/http-filesyste/README.md similarity index 91% rename from src/reference/config/bindings/binding-http-filesystem.md rename to src/reference/config/bindings/http-filesyste/README.md index a091133d..bf528886 100644 --- a/src/reference/config/bindings/binding-http-filesystem.md +++ b/src/reference/config/bindings/http-filesyste/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-http-filesystem.html +dir: + collapsible: false + link: true shortTitle: http-filesystem description: Zilla runtime http-filesystem binding category: @@ -33,7 +37,7 @@ The `proxy` kind `http-filesystem` binding adapts `http` data streams into `file Behaves as a web server when combined with `tcp,` `tls`, `http` and `filesystem` bindings. -### kind: proxy\* +### kind: proxy Behave as an `http-filesystem` `proxy`. @@ -80,7 +84,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `http` data streams into `filesystem` data streams. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/http-filesyste/proxy.md b/src/reference/config/bindings/http-filesyste/proxy.md new file mode 100644 index 00000000..4c88c0b4 --- /dev/null +++ b/src/reference/config/bindings/http-filesyste/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# http-filesyste proxy + +The http-filesyste proxy binding diff --git a/src/reference/config/bindings/http-kafka/.partials/proxy.yaml b/src/reference/config/bindings/http-kafka/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-http-kafka.md b/src/reference/config/bindings/http-kafka/README.md similarity index 98% rename from src/reference/config/bindings/binding-http-kafka.md rename to src/reference/config/bindings/http-kafka/README.md index d4c4ec9c..709587f2 100644 --- a/src/reference/config/bindings/binding-http-kafka.md +++ b/src/reference/config/bindings/http-kafka/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-http-kafka.html +dir: + collapsible: false + link: true shortTitle: http-kafka description: Zilla runtime http-kafka binding category: @@ -57,7 +61,7 @@ http_kafka_proxy: The `proxy` kind `http-kafka` binding adapts `http` request-response streams to `kafka` topic streams. -### kind: proxy\* +### kind: proxy Behave as an `http-kafka` `proxy`. @@ -196,7 +200,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `http` request-response streams to `kafka` topic streams. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/http-kafka/proxy.md b/src/reference/config/bindings/http-kafka/proxy.md new file mode 100644 index 00000000..247a0145 --- /dev/null +++ b/src/reference/config/bindings/http-kafka/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# http-kafka proxy + +The http-kafka proxy binding diff --git a/src/reference/config/bindings/http/.partials/client.yaml b/src/reference/config/bindings/http/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/http/.partials/server.yaml b/src/reference/config/bindings/http/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-http.md b/src/reference/config/bindings/http/README.md similarity index 83% rename from src/reference/config/bindings/binding-http.md rename to src/reference/config/bindings/http/README.md index 442a61dc..782c7763 100644 --- a/src/reference/config/bindings/binding-http.md +++ b/src/reference/config/bindings/http/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-http.html +dir: + collapsible: false + link: true shortTitle: http description: Zilla runtime http binding category: @@ -103,9 +107,100 @@ options: custom-text: custom-value ``` -#### options.versions +#### options.requests + +> `array` of `object` + +##### requests[].content + +> `object` of a named [`model`](../models/) + +Enforce validation for the request content. + +##### requests[].content-type + +> `string` + + + +##### requests[].headers + +> `string` + + + +##### requests[].method + +> `enum` [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ] + + + +##### requests[].params + +> `string` + + +###### params.path + +> `object` of a named [`model`](../models/) + +Enforce validation for path + +###### params.query + +> `object` of a named [`model`](../models/) + +Enforce validation for query + +##### requests[].path + +> `string` + + -> `array` of `enum` [ "http/1.1", "h2" ] +##### requests[].responses + +> `array` of `object` + + +###### responses[].content + +> `string` + + + +###### responses[].content-type + +> `array` of `string` + + + +###### responses[].headers + +> `map` of "name: [model](../models/)" properties + +Enforce validation for response headers. + +```yaml +headers: + my-header: + type: string + maxLength: 100 +``` + + + + +###### responses[].status + +> `string` + + + + + + +#### options.versions Supported protocol versions. @@ -238,6 +333,8 @@ Named query parameter value pattern with `{credentials}`. Request header overrides. + + ### exit > `string` @@ -281,7 +378,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/http/client.md b/src/reference/config/bindings/http/client.md new file mode 100644 index 00000000..05b3a3b4 --- /dev/null +++ b/src/reference/config/bindings/http/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# http client + +The http client binding diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md new file mode 100644 index 00000000..4a1256c2 --- /dev/null +++ b/src/reference/config/bindings/http/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# http server + +The http server binding diff --git a/src/reference/config/bindings/kafka-grpc/.partials/remote_server.yaml b/src/reference/config/bindings/kafka-grpc/.partials/remote_server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-kafka-grpc.md b/src/reference/config/bindings/kafka-grpc/README.md similarity index 95% rename from src/reference/config/bindings/binding-kafka-grpc.md rename to src/reference/config/bindings/kafka-grpc/README.md index 1309ff42..ffb8626a 100644 --- a/src/reference/config/bindings/binding-kafka-grpc.md +++ b/src/reference/config/bindings/kafka-grpc/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-kafka-grpc.html +dir: + collapsible: false + link: true shortTitle: kafka-grpc description: Zilla runtime kafka-grpc binding category: @@ -47,7 +51,7 @@ The `grpc` request message is received from a `requests` topic, with a `zilla:co Note that `grpc` requests and responses can be `unary` or `streaming`. -### kind: remote_server\* +### kind: remote_server The `remote_server` kind `kafka-grpc` binding adapts `kafka` topic streams to `grpc` request-response streams. @@ -163,7 +167,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `kafka` topic streams to `grpc` request-response streams. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/kafka-grpc/remote_server.md b/src/reference/config/bindings/kafka-grpc/remote_server.md new file mode 100644 index 00000000..a2cfccc4 --- /dev/null +++ b/src/reference/config/bindings/kafka-grpc/remote_server.md @@ -0,0 +1,7 @@ +--- +shortTitle: remote_server +--- + +# kafka-grpc remote_server + +The kafka-grpc remote_server binding diff --git a/src/reference/config/bindings/kafka-proxy/.partials/proxy.yaml b/src/reference/config/bindings/kafka-proxy/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-kafka-proxy.md b/src/reference/config/bindings/kafka-proxy/README.md similarity index 88% rename from src/reference/config/bindings/binding-kafka-proxy.md rename to src/reference/config/bindings/kafka-proxy/README.md index bf7fbcd7..ae368419 100644 --- a/src/reference/config/bindings/binding-kafka-proxy.md +++ b/src/reference/config/bindings/kafka-proxy/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-kafka-proxy.html +dir: + collapsible: false + link: true shortTitle: kafka-proxy description: Zilla runtime kafka-proxy binding icon: aky-zilla-plus @@ -35,7 +39,7 @@ kafka_proxy: Defines a binding with `kafka-proxy` support, with `proxy` behavior. -### kind: proxy\* +### kind: proxy Behave as a `proxy`. @@ -113,23 +117,7 @@ Default exit binding when no conditional routes are viable. exit: tls_client ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/kafka-proxy/proxy.md b/src/reference/config/bindings/kafka-proxy/proxy.md new file mode 100644 index 00000000..80d36b47 --- /dev/null +++ b/src/reference/config/bindings/kafka-proxy/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# kafka-proxy proxy + +The kafka-proxy proxy binding diff --git a/src/reference/config/bindings/kafka/.partials/cache_client.yaml b/src/reference/config/bindings/kafka/.partials/cache_client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/kafka/.partials/cache_server.yaml b/src/reference/config/bindings/kafka/.partials/cache_server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/kafka/.partials/client.yaml b/src/reference/config/bindings/kafka/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-kafka.md b/src/reference/config/bindings/kafka/README.md similarity index 94% rename from src/reference/config/bindings/binding-kafka.md rename to src/reference/config/bindings/kafka/README.md index 7d226293..ce142cf3 100644 --- a/src/reference/config/bindings/binding-kafka.md +++ b/src/reference/config/bindings/kafka/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-kafka.html +dir: + collapsible: false + link: true shortTitle: kafka description: Zilla runtime kafka binding category: @@ -176,7 +180,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ##### when[].topic\* @@ -194,23 +198,7 @@ Next binding when following this route. exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/kafka/cache_client.md b/src/reference/config/bindings/kafka/cache_client.md new file mode 100644 index 00000000..083adb31 --- /dev/null +++ b/src/reference/config/bindings/kafka/cache_client.md @@ -0,0 +1,7 @@ +--- +shortTitle: cache_client +--- + +# kafka cache_client + +The kafka cache_client binding diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md new file mode 100644 index 00000000..7af6b36c --- /dev/null +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -0,0 +1,7 @@ +--- +shortTitle: cache_server +--- + +# kafka cache_server + +The kafka cache_server binding diff --git a/src/reference/config/bindings/kafka/client.md b/src/reference/config/bindings/kafka/client.md new file mode 100644 index 00000000..e2553061 --- /dev/null +++ b/src/reference/config/bindings/kafka/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# kafka client + +The kafka client binding diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/proxy.yaml b/src/reference/config/bindings/mqtt-kafka/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-mqtt-kafka.md b/src/reference/config/bindings/mqtt-kafka/README.md similarity index 93% rename from src/reference/config/bindings/binding-mqtt-kafka.md rename to src/reference/config/bindings/mqtt-kafka/README.md index af77bd02..824a6a9e 100644 --- a/src/reference/config/bindings/binding-mqtt-kafka.md +++ b/src/reference/config/bindings/mqtt-kafka/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-mqtt-kafka.html +dir: + collapsible: false + link: true shortTitle: mqtt-kafka description: Zilla runtime mqtt-kafka binding category: @@ -41,7 +45,7 @@ mqtt_kafka_proxy: Defines a binding with `mqtt-kafka` support, with `proxy` behavior. -### kind: proxy\* +### kind: proxy Behave as a `mqtt-kafka` `proxy`. @@ -168,7 +172,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `mqtt` topic streams to `kafka` topic streams. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: @@ -248,23 +252,7 @@ Default exit binding when no conditional routes are viable. exit: kafka_cache_client ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/mqtt-kafka/proxy.md b/src/reference/config/bindings/mqtt-kafka/proxy.md new file mode 100644 index 00000000..9477ec16 --- /dev/null +++ b/src/reference/config/bindings/mqtt-kafka/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# mqtt-kafka proxy + +The mqtt-kafka proxy binding diff --git a/src/reference/config/bindings/mqtt/.partials/client.yaml b/src/reference/config/bindings/mqtt/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/mqtt/.partials/server.yaml b/src/reference/config/bindings/mqtt/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-mqtt.md b/src/reference/config/bindings/mqtt/README.md similarity index 92% rename from src/reference/config/bindings/binding-mqtt.md rename to src/reference/config/bindings/mqtt/README.md index 3887be22..0ac06a7e 100644 --- a/src/reference/config/bindings/binding-mqtt.md +++ b/src/reference/config/bindings/mqtt/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-mqtt.html +dir: + collapsible: false + link: true shortTitle: mqtt description: Zilla runtime mqtt binding category: @@ -42,13 +46,13 @@ mqtt_server: Defines a binding with `mqtt` protocol support, with `server` behavior. -### kind: server\* +### kind: server The `server` kind `mqtt` binding decodes the MQTT protocol on the inbound network stream, producing higher level application streams for each `publish` or `subscribe` `topic`. The `session` state is also described by a higher level application stream. Conditional routes based on the `topic` `name` are used to route these application streams to an `exit` binding. -### kind: client\* +### kind: client The `client` kind `mqtt` binding encodes the MQTT protocol to the outbound network stream. @@ -180,7 +184,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: @@ -239,23 +243,7 @@ routes: exit: mqtt_kafka_proxy ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md new file mode 100644 index 00000000..2955af94 --- /dev/null +++ b/src/reference/config/bindings/mqtt/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# mqtt client + +The mqtt client binding diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md new file mode 100644 index 00000000..fbe134f9 --- /dev/null +++ b/src/reference/config/bindings/mqtt/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# mqtt server + +The mqtt server binding diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/proxy.yaml b/src/reference/config/bindings/openapi-asyncapi/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-openapi-asyncapi.md b/src/reference/config/bindings/openapi-asyncapi/README.md similarity index 90% rename from src/reference/config/bindings/binding-openapi-asyncapi.md rename to src/reference/config/bindings/openapi-asyncapi/README.md index 12ed1867..33c1ad36 100644 --- a/src/reference/config/bindings/binding-openapi-asyncapi.md +++ b/src/reference/config/bindings/openapi-asyncapi/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-openapi-asyncapi.html +dir: + collapsible: false + link: true shortTitle: openapi-asyncapi description: Zilla runtime openapi-asyncapi binding category: @@ -44,7 +48,7 @@ openapi_asyncapi_proxy: The `proxy` kind `openapi-asyncapi` binding adapts OpenAPI request-response streams to AsyncAPI streams. -### kind: proxy\* +### kind: proxy Behave as an `openapi-asyncapi` `proxy`. @@ -124,7 +128,7 @@ Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations > `array` of `object` List of conditions to match this route when adapting `openapi` request-response streams to `asyncapi` streams. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ##### when[].api-id @@ -174,23 +178,7 @@ AsyncAPI spec identifier that the route exits with to the next binding AsyncAPI OperationId that the route exits with to the next binding -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/openapi-asyncapi/proxy.md b/src/reference/config/bindings/openapi-asyncapi/proxy.md new file mode 100644 index 00000000..a85fb041 --- /dev/null +++ b/src/reference/config/bindings/openapi-asyncapi/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# openapi-asyncapi proxy + +The openapi-asyncapi proxy binding diff --git a/src/reference/config/bindings/openapi/.partials/client.yaml b/src/reference/config/bindings/openapi/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/openapi/.partials/server.yaml b/src/reference/config/bindings/openapi/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-openapi.md b/src/reference/config/bindings/openapi/README.md similarity index 94% rename from src/reference/config/bindings/binding-openapi.md rename to src/reference/config/bindings/openapi/README.md index 167415d7..91bf12cc 100644 --- a/src/reference/config/bindings/binding-openapi.md +++ b/src/reference/config/bindings/openapi/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-openapi.html +dir: + collapsible: false + link: true shortTitle: openapi description: Zilla runtime openapi binding category: @@ -49,11 +53,11 @@ openapi_client: Defines a binding with `openapi` spec, with `server` or `client` behavior. -### kind: server\* +### kind: server The `server` kind `openapi` binding creates composite of `tcp`, `tls`, and `http` bindings with server kind and adapts HTTP request-response streams to OpenAPI request-response streams. -### kind: client\* +### kind: client The `client` kind `openapi` binding creates composite of `http`, `tls`, and `tcp` bindings with client kind and adapts OpenAPI request-response streams to HTTP request-response streams. @@ -235,23 +239,7 @@ Default exit binding. exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md new file mode 100644 index 00000000..6eb3e67c --- /dev/null +++ b/src/reference/config/bindings/openapi/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# openapi client + +The openapi client binding diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md new file mode 100644 index 00000000..3231fa84 --- /dev/null +++ b/src/reference/config/bindings/openapi/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# openapi server + +The openapi server binding diff --git a/src/reference/config/bindings/proxy/.partials/client.yaml b/src/reference/config/bindings/proxy/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/proxy/.partials/server.yaml b/src/reference/config/bindings/proxy/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-proxy.md b/src/reference/config/bindings/proxy/README.md similarity index 87% rename from src/reference/config/bindings/binding-proxy.md rename to src/reference/config/bindings/proxy/README.md index eaafb22c..e7b72a04 100644 --- a/src/reference/config/bindings/binding-proxy.md +++ b/src/reference/config/bindings/proxy/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-proxy.html +dir: + collapsible: false + link: true shortTitle: proxy description: Zilla runtime proxy binding category: @@ -31,11 +35,11 @@ proxy_server: Defines a binding with `proxy` protocol support, with `server` or `client` behavior. Conditional routes based on the network transport type or network addresses are used to route these streams to an `exit` binding. -### kind: server\* +### kind: server The `server` kind `proxy` binding decodes `Proxy v2` protocol on the inbound network stream, producing higher level application streams for each request. -### kind: client\* +### kind: client The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via `Proxy v2` protocol. @@ -83,7 +87,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ##### when[].transport @@ -146,23 +150,7 @@ routes: exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/proxy/client.md b/src/reference/config/bindings/proxy/client.md new file mode 100644 index 00000000..18b118f5 --- /dev/null +++ b/src/reference/config/bindings/proxy/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# proxy client + +The proxy client binding diff --git a/src/reference/config/bindings/proxy/server.md b/src/reference/config/bindings/proxy/server.md new file mode 100644 index 00000000..25de1d13 --- /dev/null +++ b/src/reference/config/bindings/proxy/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# proxy server + +The proxy server binding diff --git a/src/reference/config/bindings/sse-kafka/.partials/proxy.yaml b/src/reference/config/bindings/sse-kafka/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-sse-kafka.md b/src/reference/config/bindings/sse-kafka/README.md similarity index 95% rename from src/reference/config/bindings/binding-sse-kafka.md rename to src/reference/config/bindings/sse-kafka/README.md index 435dcb40..ac86bdcc 100644 --- a/src/reference/config/bindings/binding-sse-kafka.md +++ b/src/reference/config/bindings/sse-kafka/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-sse-kafka.html +dir: + collapsible: false + link: true shortTitle: sse-kafka description: Zilla runtime sse-kafka binding category: @@ -31,7 +35,7 @@ sse_kafka_proxy: Defines a binding with `sse-kafka` support, with `proxy` behavior. -### kind: proxy\* +### kind: proxy The `proxy` kind `sse-kafka` binding adapts `sse` data streams into `kafka` data streams, so that `kafka` messages can be delivered to `sse` clients. @@ -88,7 +92,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/sse-kafka/proxy.md b/src/reference/config/bindings/sse-kafka/proxy.md new file mode 100644 index 00000000..714a343d --- /dev/null +++ b/src/reference/config/bindings/sse-kafka/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# sse-kafka proxy + +The sse-kafka proxy binding diff --git a/src/reference/config/bindings/sse/.partials/client.yaml b/src/reference/config/bindings/sse/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/sse/.partials/server.yaml b/src/reference/config/bindings/sse/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-sse.md b/src/reference/config/bindings/sse/README.md similarity index 91% rename from src/reference/config/bindings/binding-sse.md rename to src/reference/config/bindings/sse/README.md index 480f2d7f..d7313446 100644 --- a/src/reference/config/bindings/binding-sse.md +++ b/src/reference/config/bindings/sse/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-sse.html +dir: + collapsible: false + link: true shortTitle: sse description: Zilla runtime sse binding category: @@ -24,13 +28,13 @@ sse_server: Defines a binding with Server Sent Events (sse) protocol support, with `server` behavior. -### kind: server\* +### kind: server The `server` kind `sse` binding converts inbound `http` request-response streams into `sse` request-response streams. Messages received on the `sse` response stream are encoded using `Server Sent Events` protocol, including support for custom `event` types and last event `id`. -### kind: client\* +### kind: client The `client` kind `sse` binding converts outbound `see` request-response streams into `http` request-response streams. @@ -113,7 +117,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/sse/client.md b/src/reference/config/bindings/sse/client.md new file mode 100644 index 00000000..92b4e9c9 --- /dev/null +++ b/src/reference/config/bindings/sse/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# sse client + +The sse client binding diff --git a/src/reference/config/bindings/sse/server.md b/src/reference/config/bindings/sse/server.md new file mode 100644 index 00000000..3b5278ee --- /dev/null +++ b/src/reference/config/bindings/sse/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# sse server + +The sse server binding diff --git a/src/reference/config/bindings/tcp/.partials/client.yaml b/src/reference/config/bindings/tcp/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/tcp/.partials/server.yaml b/src/reference/config/bindings/tcp/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-tcp.md b/src/reference/config/bindings/tcp/README.md similarity index 86% rename from src/reference/config/bindings/binding-tcp.md rename to src/reference/config/bindings/tcp/README.md index 89bb0567..43d03e8d 100644 --- a/src/reference/config/bindings/binding-tcp.md +++ b/src/reference/config/bindings/tcp/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-tcp.html +dir: + collapsible: false + link: true shortTitle: tcp description: Zilla runtime tcp binding category: @@ -29,11 +33,11 @@ Defines a binding with `tcp` protocol support, with `server` or `client` behavio Conditional routes based on the hostname authority and network address mask are used to route these streams to an `exit` binding. -### kind: server\* +### kind: server The `server` kind `tcp` binding listens for inbound socket connections, producing higher level application streams for each remote `tcp` client. -### kind: client\* +### kind: client The `client` kind `tcp` binding receives inbound application streams and initiates outbound `tcp` network connections to a remote `tcp` server address. @@ -88,7 +92,7 @@ List of roles required by each named guard to authorize this route. > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ##### when[].authority @@ -121,23 +125,7 @@ routes: exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/tcp/client.md b/src/reference/config/bindings/tcp/client.md new file mode 100644 index 00000000..b16843a6 --- /dev/null +++ b/src/reference/config/bindings/tcp/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# tcp client + +The tcp client binding diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md new file mode 100644 index 00000000..e73afb1f --- /dev/null +++ b/src/reference/config/bindings/tcp/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# tcp server + +The tcp server binding diff --git a/src/reference/config/bindings/tls/.partials/client.yaml b/src/reference/config/bindings/tls/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/tls/.partials/proxy.yaml b/src/reference/config/bindings/tls/.partials/proxy.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/tls/.partials/server.yaml b/src/reference/config/bindings/tls/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-tls.md b/src/reference/config/bindings/tls/README.md similarity index 92% rename from src/reference/config/bindings/binding-tls.md rename to src/reference/config/bindings/tls/README.md index f5b23bad..ae46db32 100644 --- a/src/reference/config/bindings/binding-tls.md +++ b/src/reference/config/bindings/tls/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-tls.html +dir: + collapsible: false + link: true shortTitle: tls description: Zilla runtime tls binding category: @@ -168,7 +172,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: @@ -207,23 +211,7 @@ routes: exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/tls/client.md b/src/reference/config/bindings/tls/client.md new file mode 100644 index 00000000..a4e38656 --- /dev/null +++ b/src/reference/config/bindings/tls/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# tls client + +The tls client binding diff --git a/src/reference/config/bindings/tls/proxy.md b/src/reference/config/bindings/tls/proxy.md new file mode 100644 index 00000000..371deaf1 --- /dev/null +++ b/src/reference/config/bindings/tls/proxy.md @@ -0,0 +1,7 @@ +--- +shortTitle: proxy +--- + +# tls proxy + +The tls proxy binding diff --git a/src/reference/config/bindings/tls/server.md b/src/reference/config/bindings/tls/server.md new file mode 100644 index 00000000..45ae5a55 --- /dev/null +++ b/src/reference/config/bindings/tls/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# tls server + +The tls server binding diff --git a/src/reference/config/bindings/ws/.partials/client.yaml b/src/reference/config/bindings/ws/.partials/client.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/ws/.partials/server.yaml b/src/reference/config/bindings/ws/.partials/server.yaml new file mode 100644 index 00000000..e69de29b diff --git a/src/reference/config/bindings/binding-ws.md b/src/reference/config/bindings/ws/README.md similarity index 87% rename from src/reference/config/bindings/binding-ws.md rename to src/reference/config/bindings/ws/README.md index 26e119bb..bbd0a90b 100644 --- a/src/reference/config/bindings/binding-ws.md +++ b/src/reference/config/bindings/ws/README.md @@ -1,4 +1,8 @@ --- +redirectFrom: /reference/config/bindings/binding-ws.html +dir: + collapsible: false + link: true shortTitle: ws description: Zilla runtime ws binding category: @@ -27,13 +31,13 @@ ws_server: Defines a binding with WebSockets protocol support, with `server` or `client` behavior. -### kind: server\* +### kind: server The `server` kind `ws` binding converts inbound `http` request-response streams into `ws` full-duplex streams. Conditional routes based on `ws` scheme, authority, path or negotiated subprotocol are used to route these streams to an `exit` binding. -### kind: client\* +### kind: client The `client` kind `ws` binding converts inbound `ws` full duplex streams into `http` request-response streams. @@ -116,7 +120,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: @@ -161,23 +165,7 @@ routes: exit: echo_server ``` -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* -``` + --- diff --git a/src/reference/config/bindings/ws/client.md b/src/reference/config/bindings/ws/client.md new file mode 100644 index 00000000..763c9ddd --- /dev/null +++ b/src/reference/config/bindings/ws/client.md @@ -0,0 +1,7 @@ +--- +shortTitle: client +--- + +# ws client + +The ws client binding diff --git a/src/reference/config/bindings/ws/server.md b/src/reference/config/bindings/ws/server.md new file mode 100644 index 00000000..7c137b81 --- /dev/null +++ b/src/reference/config/bindings/ws/server.md @@ -0,0 +1,7 @@ +--- +shortTitle: server +--- + +# ws server + +The ws server binding From edf01a8001195305aabe1bd28377935fc3057f61 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 21 Aug 2024 17:09:49 -0400 Subject: [PATCH 11/54] update ref sections --- .check-schema/index.js | 52 ++- .../bindings/.partials/telemetry-http.md | 18 + .../config/bindings/.partials/telemetry.md | 18 +- .../config/bindings/amqp/.partials/routes.md | 65 +++ .../bindings/amqp/.partials/server.yaml | 12 + src/reference/config/bindings/amqp/README.md | 18 +- src/reference/config/bindings/amqp/server.md | 97 +---- .../bindings/asyncapi/.partials/client.yaml | 14 + .../bindings/asyncapi/.partials/options.md | 178 ++++++++ .../bindings/asyncapi/.partials/proxy.yaml | 37 ++ .../bindings/asyncapi/.partials/routes.md | 78 ++++ .../bindings/asyncapi/.partials/server.yaml | 7 + .../config/bindings/asyncapi/README.md | 382 +--------------- .../config/bindings/asyncapi/client.md | 13 +- .../config/bindings/asyncapi/proxy.md | 13 +- .../config/bindings/asyncapi/server.md | 64 ++- .../bindings/echo/.partials/server.yaml | 3 + src/reference/config/bindings/echo/README.md | 26 +- src/reference/config/bindings/echo/server.md | 11 +- .../config/bindings/fan/.partials/server.yaml | 4 + src/reference/config/bindings/fan/README.md | 35 +- src/reference/config/bindings/fan/server.md | 20 +- .../bindings/filesyste/.partials/server.yaml | 0 .../config/bindings/filesyste/README.md | 69 --- .../config/bindings/filesyste/server.md | 7 - .../bindings/filesystem/.partials/options.md | 23 + .../bindings/filesystem/.partials/server.yaml | 6 + .../config/bindings/filesystem/README.md | 26 ++ .../config/bindings/filesystem/server.md | 16 + .../bindings/grpc-kafka/.partials/options.md | 86 ++++ .../bindings/grpc-kafka/.partials/routes.md | 222 ++++++++++ .../config/bindings/grpc-kafka/README.md | 4 +- .../config/bindings/grpc-kafka/proxy.md | 322 +------------- src/reference/config/bindings/grpc/client.md | 12 +- src/reference/config/bindings/grpc/server.md | 6 +- .../http-filesyste/.partials/proxy.yaml | 0 .../config/bindings/http-filesyste/README.md | 149 ------- .../config/bindings/http-filesyste/proxy.md | 7 - .../http-filesystem/.partials/proxy.yaml | 9 + .../http-filesystem/.partials/routes.md | 71 +++ .../config/bindings/http-filesystem/README.md | 28 ++ .../config/bindings/http-filesystem/proxy.md | 19 + .../config/bindings/http-kafka/README.md | 4 +- .../config/bindings/http-kafka/proxy.md | 11 + .../bindings/http/.partials/client.yaml | 7 + .../config/bindings/http/.partials/options.md | 237 ++++++++++ .../config/bindings/http/.partials/routes.md | 61 +++ .../bindings/http/.partials/server.yaml | 17 + src/reference/config/bindings/http/README.md | 407 +----------------- src/reference/config/bindings/http/client.md | 15 +- src/reference/config/bindings/http/server.md | 19 +- .../config/bindings/kafka-grpc/README.md | 4 +- .../bindings/kafka-grpc/remote_server.md | 11 + .../config/bindings/kafka-proxy/README.md | 6 +- .../config/bindings/kafka-proxy/proxy.md | 11 + src/reference/config/bindings/kafka/README.md | 24 +- .../config/bindings/kafka/cache_client.md | 11 + .../config/bindings/kafka/cache_server.md | 11 + src/reference/config/bindings/kafka/client.md | 11 + .../config/bindings/mqtt-kafka/README.md | 6 +- .../config/bindings/mqtt-kafka/proxy.md | 11 + src/reference/config/bindings/mqtt/README.md | 20 +- src/reference/config/bindings/mqtt/client.md | 11 + src/reference/config/bindings/mqtt/server.md | 11 + .../bindings/openapi-asyncapi/README.md | 6 +- .../config/bindings/openapi-asyncapi/proxy.md | 11 + .../config/bindings/openapi/README.md | 10 +- .../config/bindings/openapi/client.md | 11 + .../config/bindings/openapi/server.md | 11 + src/reference/config/bindings/proxy/README.md | 20 +- src/reference/config/bindings/proxy/client.md | 11 + src/reference/config/bindings/proxy/server.md | 11 + .../config/bindings/sse-kafka/README.md | 4 +- .../config/bindings/sse-kafka/proxy.md | 11 + src/reference/config/bindings/sse/README.md | 8 +- src/reference/config/bindings/sse/client.md | 11 + src/reference/config/bindings/sse/server.md | 11 + src/reference/config/bindings/tcp/README.md | 10 +- src/reference/config/bindings/tcp/client.md | 11 + src/reference/config/bindings/tcp/server.md | 11 + src/reference/config/bindings/tls/README.md | 24 +- src/reference/config/bindings/tls/client.md | 11 + src/reference/config/bindings/tls/proxy.md | 11 + src/reference/config/bindings/tls/server.md | 11 + src/reference/config/bindings/ws/README.md | 20 +- src/reference/config/bindings/ws/client.md | 11 + src/reference/config/bindings/ws/server.md | 11 + .../.templates/schema-registry-config.md | 21 + 88 files changed, 1871 insertions(+), 1590 deletions(-) create mode 100644 src/reference/config/bindings/.partials/telemetry-http.md create mode 100644 src/reference/config/bindings/amqp/.partials/routes.md create mode 100644 src/reference/config/bindings/asyncapi/.partials/options.md create mode 100644 src/reference/config/bindings/asyncapi/.partials/routes.md delete mode 100644 src/reference/config/bindings/filesyste/.partials/server.yaml delete mode 100644 src/reference/config/bindings/filesyste/README.md delete mode 100644 src/reference/config/bindings/filesyste/server.md create mode 100644 src/reference/config/bindings/filesystem/.partials/options.md create mode 100644 src/reference/config/bindings/filesystem/.partials/server.yaml create mode 100644 src/reference/config/bindings/filesystem/README.md create mode 100644 src/reference/config/bindings/filesystem/server.md create mode 100644 src/reference/config/bindings/grpc-kafka/.partials/options.md create mode 100644 src/reference/config/bindings/grpc-kafka/.partials/routes.md delete mode 100644 src/reference/config/bindings/http-filesyste/.partials/proxy.yaml delete mode 100644 src/reference/config/bindings/http-filesyste/README.md delete mode 100644 src/reference/config/bindings/http-filesyste/proxy.md create mode 100644 src/reference/config/bindings/http-filesystem/.partials/proxy.yaml create mode 100644 src/reference/config/bindings/http-filesystem/.partials/routes.md create mode 100644 src/reference/config/bindings/http-filesystem/README.md create mode 100644 src/reference/config/bindings/http-filesystem/proxy.md create mode 100644 src/reference/config/bindings/http/.partials/options.md create mode 100644 src/reference/config/bindings/http/.partials/routes.md create mode 100644 src/reference/config/catalogs/.templates/schema-registry-config.md diff --git a/.check-schema/index.js b/.check-schema/index.js index 00dcc3dc..7123b553 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -1,4 +1,5 @@ const fs = require("fs"); +const path = require("path"); const { marked } = require("marked"); const { $RefParser } = require("@apidevtools/json-schema-ref-parser"); const schema = require("./zilla-schema.json"); @@ -8,7 +9,7 @@ const main = async () => { // console.log("RefParser", JSON.stringify(schema, null, 4)) var errors = []; - function getPageProps(name, tokens) { + function getPageProps(tokens) { var foundHeadings = []; tokens .filter(({ depth, type }) => type == "heading" && depth == 3) @@ -16,7 +17,7 @@ const main = async () => { if (t.text && t.type && t.type === "heading") { t.tokens .filter(({ type }) => type === "text") - .forEach(({ text }) => foundHeadings.push(`${name}.${text}`)); + .forEach(({ text }) => foundHeadings.push(`${text}`)); } }); tokens @@ -119,15 +120,17 @@ const main = async () => { } var sections = Object.entries({ - guards: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], - vaults: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], - catalogs: schema.properties.catalogs.patternProperties[Object.keys(schema.properties.catalogs.patternProperties)[0]], + guard: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], + vault: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], + catalog: schema.properties.catalogs.patternProperties[Object.keys(schema.properties.catalogs.patternProperties)[0]], }).map(([section, props]) => props?.allOf?.map(({ if: fi, then }) => ({ - folder: section, + folder: `${section}s`, name: fi.properties.type.const || fi.properties.type.enum?.[0], properties: { - ...(props?.properties || {}), + ...schema.$defs[section].properties, + options: { ...(schema.$defs.options[section]?.[(fi.properties.type.const || fi.properties.type.enum?.[0])] || {}) }, + ...(props?.properties || {}), ...(then.properties || {}), required: [...(props?.required || []), ...(then.required || [])], oneOf: [...(props?.oneOf || []), ...(then.oneOf || [])], @@ -143,11 +146,13 @@ const main = async () => { folder, name: properties.kind.const, properties: { - ...(then.properties || {}), + ...schema.$defs.binding.properties, + options: { ...(schema.$defs.options.binding[properties.kind.const] || {}) }, + ...(then.properties || {}), ...(properties || {}), - required: [ ...(then.required || []), ...(required || []) ], - oneOf: [ ...(then.oneOf || []), ...(oneOf || []) ], - anyOf: [ ...(then.anyOf || []), ...(anyOf || []) ], + required: [...(then.required || []), ...(required || [])], + oneOf: [...(then.oneOf || []), ...(oneOf || [])], + anyOf: [...(then.anyOf || []), ...(anyOf || [])], }, }))); } else { @@ -184,18 +189,21 @@ const main = async () => { sections.forEach(({ folder, name, properties }) => { delete properties.type; delete properties.kind; - var filename = `src/reference/config/${folder.replaceAll(".", "/")}/${name}.md`; - console.log(filename, properties); + var foldername = `src/reference/config/${folder.replaceAll(".", "/")}`; + var filename = `${name}.md`; + var filePath = `${foldername}/${filename}`; + // console.log(filePath, properties); var attrs = getObjProps(null, properties, []); - if ( - fs.existsSync(filename) - ) { - var headers = getPageProps(name, - marked.lexer( - fs.readFileSync(filename, "utf8") - .toString() - ) - ).sort(); + if (fs.existsSync(filePath)) { + + var fullMdContent = fs.readFileSync(filePath, "utf8") + .toString(); + fullMdContent = fullMdContent.replace(//g, (_, p1) => + (fs.readFileSync(path.resolve(foldername, p1), "utf8").toString()) + ); + // console.log("fullMdContent", fullMdContent) + + var headers = getPageProps(marked.lexer(fullMdContent)).sort(); var sorted = attrs.map((a) => a[0]).sort(); console.log("findings", folder, name, sorted, headers); var addList = sorted.filter((x) => diff --git a/src/reference/config/bindings/.partials/telemetry-http.md b/src/reference/config/bindings/.partials/telemetry-http.md new file mode 100644 index 00000000..83497d03 --- /dev/null +++ b/src/reference/config/bindings/.partials/telemetry-http.md @@ -0,0 +1,18 @@ +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream", "http" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* + - http.* +``` diff --git a/src/reference/config/bindings/.partials/telemetry.md b/src/reference/config/bindings/.partials/telemetry.md index 4d497392..be3daac4 100644 --- a/src/reference/config/bindings/.partials/telemetry.md +++ b/src/reference/config/bindings/.partials/telemetry.md @@ -1 +1,17 @@ - +### telemetry + +> `object` + +Defines the desired telemetry for the binding. + +#### telemetry.metrics + +> `enum` [ "stream" ] + +Telemetry metrics to track + +```yaml +telemetry: + metrics: + - stream.* +``` diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md new file mode 100644 index 00000000..87f4469e --- /dev/null +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -0,0 +1,65 @@ +### routes + +> `array` of `object` + +Conditional `amqp`-specific routes for adapting HTTP request-response streams to Kafka topic streams. + +```yaml +routes: + - when: + - address: echo + capabilities: send_and_receive + exit: echo_server +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - address: echo + capabilities: send_and_receive +``` + +##### when[].address + +> `string` + +Link address. + +##### when[].capabilities + +> `enum` [ "send_only", "receive_only", "send_and_receive" ] | Default: `"send_and_receive"` + +Send or receive, or both. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: echo_server +``` diff --git a/src/reference/config/bindings/amqp/.partials/server.yaml b/src/reference/config/bindings/amqp/.partials/server.yaml index e69de29b..2ec5fab3 100644 --- a/src/reference/config/bindings/amqp/.partials/server.yaml +++ b/src/reference/config/bindings/amqp/.partials/server.yaml @@ -0,0 +1,12 @@ + amqp_server: + type: amqp + kind: server + exit: default_exit + routes: + - guarded: + my_guard: + - read:items + - when: + - address: echo + capabilities: send_and_receive + exit: routed_exit diff --git a/src/reference/config/bindings/amqp/README.md b/src/reference/config/bindings/amqp/README.md index 878578af..a47769b2 100644 --- a/src/reference/config/bindings/amqp/README.md +++ b/src/reference/config/bindings/amqp/README.md @@ -19,20 +19,12 @@ Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/ Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! ::: - ## server -The `server` kind `amqp` binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. +> [Full config](./server.md) -```yaml {2} -amqp_server: - type: amqp - kind: server - routes: - - when: - - address: echo - capabilities: send_and_receive - exit: echo_server -``` +The amqp server binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. -> [Full config](./server.md) +```yaml {3} + +``` diff --git a/src/reference/config/bindings/amqp/server.md b/src/reference/config/bindings/amqp/server.md index 77af1fe1..83a4252f 100644 --- a/src/reference/config/bindings/amqp/server.md +++ b/src/reference/config/bindings/amqp/server.md @@ -1,104 +1,25 @@ --- -shortTitle: amqp server +shortTitle: server category: - Binding tag: - Server --- -# amqp server Binding +# amqp server -The `server` kind `amqp` binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. +The amqp server binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. -```yaml {2} -amqp_server: - type: amqp - kind: server - routes: - - when: - - address: echo - capabilities: send_and_receive - exit: echo_server +```yaml {3} + ``` ::: important Feature is in Incubator Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! ::: -### exit +## Configuration (\* required) -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: echo_server -``` - -### routes - -> `array` of `object` - -Conditional `amqp`-specific routes for adapting HTTP request-response streams to Kafka topic streams. - -```yaml -routes: - - when: - - address: echo - capabilities: send_and_receive - exit: echo_server -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - address: echo - capabilities: send_and_receive -``` - -##### when[].address - -> `string` - -Link address. - -##### when[].capabilities - -> `enum` [ "send_only", "receive_only", "send_and_receive" ] | Default: `"send_and_receive"` - -Send or receive, or both. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: echo_server -``` - - + + + diff --git a/src/reference/config/bindings/asyncapi/.partials/client.yaml b/src/reference/config/bindings/asyncapi/.partials/client.yaml index e69de29b..4ffb671c 100644 --- a/src/reference/config/bindings/asyncapi/.partials/client.yaml +++ b/src/reference/config/bindings/asyncapi/.partials/client.yaml @@ -0,0 +1,14 @@ + asyncapi_client: + type: asyncapi + kind: client + options: + specs: + my-kafka-api-spec: + catalog: + my_catalog: + subject: petstore + version: latest + tcp: + host: localhost + port: + - 9092 diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md new file mode 100644 index 00000000..08a94609 --- /dev/null +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -0,0 +1,178 @@ +### options + +> `object` + +`asyncapi`-specific options. + +```yaml +specs: + http_api: + servers: + - name: plain + catalog: + my_catalog: + subject: petstore + version: latest +``` + +#### options.specs + +> `object` as map of named properties + +specs specific options + +##### specs.catalog + +> `object` as map of named properties + +catalog specific options. + +###### catalog.subject + +> `string` + +Subject name used when storing the catalog artifact. + +###### catalog.version + +> `string` + +Catalog artifact version to use. + +##### specs.servers + +> `object` + +###### servers.url + +> `string` + +The server to match based on the server's `url` in an asyncapi `2.x` spec only. + +###### servers.host + +> `string` + +The server to match based on the server's `host` in an asyncapi `3.x` spec only. + +###### servers.pathname + +> `string` + +The server pathname to match based on the server's `pathname` in an asyncapi `3.x` spec only. + +#### options.tcp + +> `object` + +`client` specific `tcp` options. + +##### tcp.host + +> `string` + +Hostname or IP address. + +##### tcp.port + +> `integer` | `string` | `array` of `integer` | `array` of `string` + +Port number(s), including port number ranges. + +#### options.http + +> `object` + +http specific options. + +##### http.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + jwt: + credentials: + headers: + authorization: Bearer {credentials} +``` + +##### authorization.credentials + +> `object` + +Defines how to extract credentials from the HTTP request. + +##### credentials.cookies + +> `map` of `name: value` properties + +Named cookie value pattern with `{credentials}`. + +##### credentials.headers + +> `map` of `name: value` properties + +Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. + +##### credentials.query + +> `map` of `name: value` properties + +Named query parameter value pattern with `{credentials}`. + +#### options.tls + +> `object` + +`tls` specific options. + +##### tls.version + +> `string` + +Protocol version. + +##### tls.keys + +> `array` of `string` + +A list of reference names for the Vault key. + +##### tls.trust + +> `array` of `string` + +A list of reference names for the Vault certificate. + +##### tls.signers + +> `array` of `string` + +A list of reference names for the Vault signer certificate. + +##### tls.trustcacerts + +> `boolean` | Default: `true` when trust is `null` + +Trust CA certificates. + +##### tls.sni\* + +> `array` of `string` + +A list of the Server Name Indications. + +##### tls.alpn + +> `array` of `string` + +Application protocols. + +##### tls.mutual + +> `enum` [ "required", "requested", "none" ] | Default: `"none"` + +Mutual authentication. diff --git a/src/reference/config/bindings/asyncapi/.partials/proxy.yaml b/src/reference/config/bindings/asyncapi/.partials/proxy.yaml index e69de29b..5a8c3b87 100644 --- a/src/reference/config/bindings/asyncapi/.partials/proxy.yaml +++ b/src/reference/config/bindings/asyncapi/.partials/proxy.yaml @@ -0,0 +1,37 @@ + asyncapi_proxy: + type: asyncapi + kind: proxy + options: + specs: + my-mqtt-api-spec: + my-kafka-api-spec: + catalog: + my_catalog: + subject: petstore + version: latest + my-kafka-api-spec: + my-kafka-api-spec: + catalog: + my_catalog: + subject: petstore + version: latest + mqtt-kafka: + channels: + sessions: mqttSessions + retained: mqttRetained + messages: mqttMessages + routes: + - when: + - api-id: my-mqtt-api-spec + operation-id: sendEvents + exit: asyncapi_client + with: + api-id: my-kafka-api-spec + operation-id: toSensorData + - when: + - api-id: my-mqtt-api-spec + operation-id: receiveEvents + exit: asyncapi_client + with: + api-id: my-kafka-api-spec + operation-id: onSensorData diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md new file mode 100644 index 00000000..07fa4498 --- /dev/null +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -0,0 +1,78 @@ +### routes + +> `array` of `object` + +Conditional `asyncapi`-specific routes for adapting streams. + +```yaml + routes: + - when: + - api-id: my-mqtt-api-spec + operation-id: sendEvents + exit: asyncapi_client + with: + api-id: my-kafka-api-spec + operation-id: toSensorData + - when: + - api-id: my-mqtt-api-spec + operation-id: receiveEvents + exit: asyncapi_client + with: + api-id: my-kafka-api-spec + operation-id: onSensorData +``` + +#### routes[].when + +> `array` of `object` + +List of conditions to match this route when adapting `asyncapi` MQTT streams to `asyncapi` Kafka streams. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +##### when[].api-id + +> `string` + +AsyncAPI spec identifier that matches from `asyncapi` binding MQTT stream. + +##### when[].operation-id + +> `string` + +AsyncAPI OperationId that can be mapped between AsyncAPI MQTT and AsyncAPI Kafka spec + +#### routes[].exit\* + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +routes: + - when: + ... + exit: asyncapi_client +``` + +#### routes[].with + +> `object` + +Defines the route with the AsyncAPI spec identifier and OperationId. + +```yaml +with: + api-id: my-asyncapi-spec +``` + +##### with.api-id + +> `string` + +AsyncAPI spec identifier that the route exits with to the next binding + +##### with.operation-id + +> `string` + +AsyncAPI OperationId that the route exits with to the next binding diff --git a/src/reference/config/bindings/asyncapi/.partials/server.yaml b/src/reference/config/bindings/asyncapi/.partials/server.yaml index e69de29b..ecbd4082 100644 --- a/src/reference/config/bindings/asyncapi/.partials/server.yaml +++ b/src/reference/config/bindings/asyncapi/.partials/server.yaml @@ -0,0 +1,7 @@ + asyncapi_server: + type: asyncapi + kind: server + options: + specs: + my-mqtt-api-spec: mqtt/asyncapi.yaml + exit: asyncapi_proxy diff --git a/src/reference/config/bindings/asyncapi/README.md b/src/reference/config/bindings/asyncapi/README.md index d00495a5..f808f772 100644 --- a/src/reference/config/bindings/asyncapi/README.md +++ b/src/reference/config/bindings/asyncapi/README.md @@ -15,387 +15,35 @@ tag: # asyncapi Binding -Zilla runtime `asyncapi` binding. - -```yaml {2,9,46} - asyncapi_server: - type: asyncapi - kind: server - options: - specs: - my-mqtt-api-spec: mqtt/asyncapi.yaml - exit: asyncapi_proxy - asyncapi_proxy: - type: asyncapi - kind: proxy - options: - specs: - my-mqtt-api-spec: - my-kafka-api-spec: - catalog: - my_catalog: - subject: petstore - version: latest - my-kafka-api-spec: - my-kafka-api-spec: - catalog: - my_catalog: - subject: petstore - version: latest - mqtt-kafka: - channels: - sessions: mqttSessions - retained: mqttRetained - messages: mqttMessages - routes: - - when: - - api-id: my-mqtt-api-spec - operation-id: sendEvents - exit: asyncapi_client - with: - api-id: my-kafka-api-spec - operation-id: toSensorData - - when: - - api-id: my-mqtt-api-spec - operation-id: receiveEvents - exit: asyncapi_client - with: - api-id: my-kafka-api-spec - operation-id: onSensorData - asyncapi_client: - type: asyncapi - kind: client - options: - specs: - my-kafka-api-spec: - catalog: - my_catalog: - subject: petstore - version: latest - tcp: - host: localhost - port: - - 9092 -``` - -## Configuration (\* required) - - -### type: asyncapi\* - Defines a binding with `asyncapi` spec, with `server` or `proxy` or `client` behavior. -### kind: client +## client + +> [Full config](./client.md) The `client` kind `asyncapi` binding creates composite of `kafka` or `mqtt` or `http`, and `tls`, `tcp` bindings with client kind and adapts AsyncAPI streams to Kafka/MQTT/HTTP streams. -### kind: proxy - -The `proxy` kind `asyncapi` binding creates composite of `mqtt-kafka` binding with proxy kind mapping MQTT streams to Kafka streams. - -### kind: server - -The `server` kind `asyncapi` binding creates composite of `tcp`, `tls`, and `mqtt` or `http` bindings with server kind and adapts MQTT/HTTP streams to AsyncAPI streams. - -### options - -> `object` - -`asyncapi`-specific options. - -```yaml -specs: - http_api: - servers: - - name: plain - catalog: - my_catalog: - subject: petstore - version: latest -``` - -#### options.specs - -> `object` as map of named properties - -specs specific options - -##### specs.catalog - -> `object` as map of named properties - -catalog specific options. - -###### catalog.subject - -> `string` - -Subject name used when storing the catalog artifact. - -###### catalog.version - -> `string` - -Catalog artifact version to use. - -##### specs.servers - -> `object` - -###### servers.url - -> `string` - -The server to match based on the server's `url` in an asyncapi `2.x` spec only. - -###### servers.host - -> `string` - -The server to match based on the server's `host` in an asyncapi `3.x` spec only. - -###### servers.pathname - -> `string` - -The server pathname to match based on the server's `pathname` in an asyncapi `3.x` spec only. - -#### options.tcp - -> `object` - -`client` specific `tcp` options. - -##### tcp.host - -> `string` - -Hostname or IP address. - -##### tcp.port - -> `integer` | `string` | `array` of `integer` | `array` of `string` - -Port number(s), including port number ranges. - -#### options.http - -> `object` - -http specific options. - -##### http.authorization - -> `object` as map of named properties - -Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. - -```yaml -authorization: - jwt: - credentials: - headers: - authorization: Bearer {credentials} -``` - -##### authorization.credentials - -> `object` - -Defines how to extract credentials from the HTTP request. - -##### credentials.cookies - -> `map` of `name: value` properties - -Named cookie value pattern with `{credentials}`. - -##### credentials.headers - -> `map` of `name: value` properties - -Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -##### credentials.query - -> `map` of `name: value` properties - -Named query parameter value pattern with `{credentials}`. - -#### options.tls - -> `object` - -`tls` specific options. - -##### tls.version - -> `string` - -Protocol version. - -##### tls.keys - -> `array` of `string` - -A list of reference names for the Vault key. - -##### tls.trust - -> `array` of `string` - -A list of reference names for the Vault certificate. - -##### tls.signers - -> `array` of `string` - -A list of reference names for the Vault signer certificate. - -##### tls.trustcacerts - -> `boolean` | Default: `true` when trust is `null` - -Trust CA certificates. - -##### tls.sni\* - -> `array` of `string` - -A list of the Server Name Indications. - -##### tls.alpn - -> `array` of `string` - -Application protocols. - -##### tls.mutual - -> `enum` [ "required", "requested", "none" ] | Default: `"none"` - -Mutual authentication. - -### mqtt-kafka - -> `object` - -`mqtt-kafka` binding specific options. - -#### mqtt-kafka.channels - -> `object` - -AsyncAPI Kafka channels describing the necessary topics for the MQTT-Kafka mapping. - -```yaml -mqtt-kafka: - channels: - sessions: mqttSessions - retained: mqttRetained - messages: mqttMessages -``` - -##### channels.sessions - -> `string` - -AsyncAPI Kafka sessions channel. - -```yaml -sessions: mqttSessions +```yaml {3} + ``` -##### channels.retained +## proxy -> `string` +> [Full config](./proxy.md) -AsyncAPI Kafka retained channel. - -```yaml -retained: mqttRetained -``` - -##### channels.messages - -> `string` - -AsyncAPI Kafka messages channel. - -```yaml -messages: mqttMessages -``` - -#### routes[].when - -> `array` of `object` - -List of conditions to match this route when adapting `asyncapi` MQTT streams to `asyncapi` Kafka streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -##### when[].api-id - -> `string` - -AsyncAPI spec identifier that matches from `asyncapi` binding MQTT stream. - -##### when[].operation-id - -> `string` - -AsyncAPI OperationId that can be mapped between AsyncAPI MQTT and AsyncAPI Kafka spec - -#### routes[].exit\* - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -routes: - - when: - ... - exit: asyncapi_client -``` - -#### routes[].with - -> `object` - -Defines the route with the AsyncAPI spec identifier and OperationId. +The `proxy` kind `asyncapi` binding creates composite of `mqtt-kafka` binding with proxy kind mapping MQTT streams to Kafka streams. -```yaml -with: - api-id: my-asyncapi-spec +```yaml {3} + ``` -##### with.api-id - -> `string` - -AsyncAPI spec identifier that the route exits with to the next binding +## server -##### with.operation-id +> [Full config](./server.md) -> `string` - -AsyncAPI OperationId that the route exits with to the next binding - -### exit - -> `string` - -Default exit binding. +The `server` kind `asyncapi` binding creates composite of `tcp`, `tls`, and `mqtt` or `http` bindings with server kind and adapts MQTT/HTTP streams to AsyncAPI streams. -```yaml -exit: echo_server +```yaml {3} + ``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 59cd83f3..249c433e 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -4,4 +4,15 @@ shortTitle: client # asyncapi client -The asyncapi client binding +The asyncapi client binding creates composite of `kafka` or `mqtt` or `http`, and `tls`, `tcp` bindings with client kind and adapts AsyncAPI streams to Kafka/MQTT/HTTP streams. + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index 301c88b3..054b2e3c 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -4,4 +4,15 @@ shortTitle: proxy # asyncapi proxy -The asyncapi proxy binding +The asyncapi proxy binding creates composite of `mqtt-kafka` binding with proxy kind mapping MQTT streams to Kafka streams. + +```yaml + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index fcf6a9fb..7630d16a 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -4,4 +4,66 @@ shortTitle: server # asyncapi server -The asyncapi server binding +The asyncapi server binding creates composite of `tcp`, `tls`, and `mqtt` or `http` bindings with server kind and adapts MQTT/HTTP streams to AsyncAPI streams. + +```yaml + +``` + +## Configuration (\* required) + + + +### mqtt-kafka + +> `object` + +`mqtt-kafka` binding specific options. + +#### mqtt-kafka.channels + +> `object` + +AsyncAPI Kafka channels describing the necessary topics for the MQTT-Kafka mapping. + +```yaml +mqtt-kafka: + channels: + sessions: mqttSessions + retained: mqttRetained + messages: mqttMessages +``` + +##### channels.sessions + +> `string` + +AsyncAPI Kafka sessions channel. + +```yaml +sessions: mqttSessions +``` + +##### channels.retained + +> `string` + +AsyncAPI Kafka retained channel. + +```yaml +retained: mqttRetained +``` + +##### channels.messages + +> `string` + +AsyncAPI Kafka messages channel. + +```yaml +messages: mqttMessages +``` + + + + diff --git a/src/reference/config/bindings/echo/.partials/server.yaml b/src/reference/config/bindings/echo/.partials/server.yaml index e69de29b..61311f0b 100644 --- a/src/reference/config/bindings/echo/.partials/server.yaml +++ b/src/reference/config/bindings/echo/.partials/server.yaml @@ -0,0 +1,3 @@ + echo_server: + type: echo + kind: server diff --git a/src/reference/config/bindings/echo/README.md b/src/reference/config/bindings/echo/README.md index 40948c23..475a4fbf 100644 --- a/src/reference/config/bindings/echo/README.md +++ b/src/reference/config/bindings/echo/README.md @@ -13,28 +13,14 @@ tag: # echo Binding -Zilla runtime echo binding. - -```yaml {2} -echo_server: - type: echo - kind: server -``` - -## Configuration (\* required) - -### type: echo - This binding supports the `echo` protocol and is run with the `server` behavior. It reads inbound messages and writes it back to the sender. -### kind: server +## server -Behaves as an `echo` `server`. - - +> [Full config](./server.md) ---- +Behaves as an `echo` `server`. -::: right -\* required -::: +```yaml {3} + +``` diff --git a/src/reference/config/bindings/echo/server.md b/src/reference/config/bindings/echo/server.md index 45bcb78d..a9049b6f 100644 --- a/src/reference/config/bindings/echo/server.md +++ b/src/reference/config/bindings/echo/server.md @@ -4,4 +4,13 @@ shortTitle: server # echo server -The echo server binding +The echo server binding supports the `echo` protocol and is run with the `server` behavior. It reads inbound messages and writes it back to the sender. + +```yaml {3} + +``` + +## Configuration (\* required) + + + diff --git a/src/reference/config/bindings/fan/.partials/server.yaml b/src/reference/config/bindings/fan/.partials/server.yaml index e69de29b..2343cad1 100644 --- a/src/reference/config/bindings/fan/.partials/server.yaml +++ b/src/reference/config/bindings/fan/.partials/server.yaml @@ -0,0 +1,4 @@ + fan_server: + type: fan + kind: server + exit: echo_server diff --git a/src/reference/config/bindings/fan/README.md b/src/reference/config/bindings/fan/README.md index ba6f9f71..5ce43cff 100644 --- a/src/reference/config/bindings/fan/README.md +++ b/src/reference/config/bindings/fan/README.md @@ -13,39 +13,14 @@ tag: # fan Binding -Zilla runtime fan binding. - -```yaml {2} -fan_server: - type: fan - kind: server - exit: echo_server -``` - -## Configuration (\* required) - -### type: fan\* - Defines a binding with `fan-in` and `fan-out` support, with `server` behavior. -### kind: server - -Behave as an `fan-in` and `fan-out` `server`. The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. +## server -### exit\* +> [Full config](./server.md) -> `string` - -Default exit binding. When the `exit` is an `echo` server binding, the combination reflects all inbound data from each client to all clients. +Behave as an `fan-in` and `fan-out` `server`. The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. -```yaml -exit: echo_server +```yaml {3} + ``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/fan/server.md b/src/reference/config/bindings/fan/server.md index 55ea9b91..28c21169 100644 --- a/src/reference/config/bindings/fan/server.md +++ b/src/reference/config/bindings/fan/server.md @@ -4,4 +4,22 @@ shortTitle: server # fan server -The fan server binding +The fan server binding behaves as an `fan-in` and `fan-out` `server`. The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. + +```yaml {3} + +``` + +## Configuration (\* required) + +### exit\* + +> `string` + +Default exit binding. When the `exit` is an `echo` server binding, the combination reflects all inbound data from each client to all clients. + +```yaml +exit: echo_server +``` + + diff --git a/src/reference/config/bindings/filesyste/.partials/server.yaml b/src/reference/config/bindings/filesyste/.partials/server.yaml deleted file mode 100644 index e69de29b..00000000 diff --git a/src/reference/config/bindings/filesyste/README.md b/src/reference/config/bindings/filesyste/README.md deleted file mode 100644 index 3d862d2c..00000000 --- a/src/reference/config/bindings/filesyste/README.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -redirectFrom: /reference/config/bindings/binding-filesystem.html -dir: - collapsible: false - link: true -shortTitle: filesystem -description: Zilla runtime filesystem binding -category: - - Binding -tag: - - Server ---- - -# filesystem Binding - -Zilla runtime filesystem binding. - -```yaml {2} -filesystem_server: - type: filesystem - kind: server - options: - location: web/ - simlinks: follow -``` - -## Configuration (\* required) - -### type: filesystem\* - -The `server` kind `filesystem` binding provides access to files and directories on the local filesystem, optionally following symbolic links. - -Behaves as a web server when combined with `tcp,` `tls`, `http` and `http-filesystem` bindings. - -### kind: server - -Behave as a `filesystem` `server`. - -### options - -> `object` - -`filesystem`-specific options for `filesystem` access. - -```yaml -options: - location: web/ - simlinks: follow -``` - -#### options.location - -> `string` - -File system URI or directory name with trailing slash. - -#### options.symlinks - -> `enum` [ "follow", "ignore" ] | Default: `"ignore"` - -How to treat symbolic links. - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/filesyste/server.md b/src/reference/config/bindings/filesyste/server.md deleted file mode 100644 index d504edac..00000000 --- a/src/reference/config/bindings/filesyste/server.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -shortTitle: server ---- - -# filesyste server - -The filesyste server binding diff --git a/src/reference/config/bindings/filesystem/.partials/options.md b/src/reference/config/bindings/filesystem/.partials/options.md new file mode 100644 index 00000000..94f15b59 --- /dev/null +++ b/src/reference/config/bindings/filesystem/.partials/options.md @@ -0,0 +1,23 @@ +### options + +> `object` + +`filesystem`-specific options for `filesystem` access. + +```yaml +options: + location: web/ + simlinks: follow +``` + +#### options.location + +> `string` + +File system URI or directory name with trailing slash. + +#### options.symlinks + +> `enum` [ "follow", "ignore" ] | Default: `"ignore"` + +How to treat symbolic links. diff --git a/src/reference/config/bindings/filesystem/.partials/server.yaml b/src/reference/config/bindings/filesystem/.partials/server.yaml new file mode 100644 index 00000000..9844f778 --- /dev/null +++ b/src/reference/config/bindings/filesystem/.partials/server.yaml @@ -0,0 +1,6 @@ + filesystem_server: + type: filesystem + kind: server + options: + location: web/ + simlinks: follow diff --git a/src/reference/config/bindings/filesystem/README.md b/src/reference/config/bindings/filesystem/README.md new file mode 100644 index 00000000..a9cd813a --- /dev/null +++ b/src/reference/config/bindings/filesystem/README.md @@ -0,0 +1,26 @@ +--- +redirectFrom: /reference/config/bindings/binding-filesystem.html +dir: + collapsible: false + link: true +shortTitle: filesystem +description: Zilla runtime filesystem binding +category: + - Binding +tag: + - Server +--- + +# filesystem Binding + +The `server` kind `filesystem` binding provides access to files and directories on the local filesystem, optionally following symbolic links. It behaves as a web server when combined with `tcp,` `tls`, `http` and `http-filesystem` bindings. + +## server + +> [Full config](./server.md) + +Behave as a `filesystem` `server`. + +```yaml {3} + +``` diff --git a/src/reference/config/bindings/filesystem/server.md b/src/reference/config/bindings/filesystem/server.md new file mode 100644 index 00000000..ffa1daff --- /dev/null +++ b/src/reference/config/bindings/filesystem/server.md @@ -0,0 +1,16 @@ +--- +shortTitle: server +--- + +# filesystem server + +The filesystem server binding provides access to files and directories on the local filesystem, optionally following symbolic links.It behaves as a web server when combined with `tcp,` `tls`, `http` and `http-filesystem` bindings. + +```yaml {3} + +``` + +## Configuration (\* required) + + + diff --git a/src/reference/config/bindings/grpc-kafka/.partials/options.md b/src/reference/config/bindings/grpc-kafka/.partials/options.md new file mode 100644 index 00000000..aa48a213 --- /dev/null +++ b/src/reference/config/bindings/grpc-kafka/.partials/options.md @@ -0,0 +1,86 @@ +### options + +> `object` + +`grpc-kafka`-specific options for adapting `grpc` request-response streams to `kafka` topic streams. + +```yaml +options: + idempotency: + metadata: idempotency-key + reliability: + field: 32767 + metadata: last-message-id + correlation: + headers: + service: zilla:service + method: zilla:method + correlation-id: zilla:correlation-id + reply-to: zilla:reply-to +``` + +#### options.idempotency + +> `object` + +Metadata header used to specify the idempotency key when adapting `grpc` request-response streams to `kafka` topic streams. + +##### idempotency.metadata + +> `string` | Default: `"idempotency-key"` + +The `grpc` metadata header name for idempotency key. + +#### options.reliability + +> `object` + +Properties used when handling stream recovery. + +##### reliability.field + +> `integer` | Default: `32767` + +The `grpc` unknown field number to send the `message-id`. + +##### reliability.metadata + +> `string` | Default: `"last-message-id"` + +The `grpc` metadata header name for the last `message-id` seen when resuming a stream. + +#### options.correlation + +> `object` + +Kafka request message headers injected when adapting `grpc` request-response streams to `kafka` topic streams. + +##### correlation.headers + +> `map` of `name: value` properties + +Kafka request message reply to and correlation id header names injected when adapting `grpc` request-response streams to `kafka` topic streams. + +##### headers.service + +> `string` | Default: `"zilla:service"` + +Kafka header name for `grpc` service. + +##### headers.method + +> `string` | Default: `"zilla:method"` + +Kafka header name for `grpc` method. + +##### headers.correlation-id + +> `string` | Default: `"zilla:correlation-id"` + +Kafka header name for request-response correlation identifier. + +##### headers.reply-to + +> `string` | Default: `"zilla:reply-to"` + +Kafka header name for reply-to topic. diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md new file mode 100644 index 00000000..a4b52a64 --- /dev/null +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -0,0 +1,222 @@ +### routes + +> `array` of `object` + +Conditional `grpc-kafka`-specific routes for adapting `grpc` request-response streams to `kafka` topic streams. + +```yaml +routes: + - guarded: + my_guard: + - read:messages + when: + - service: example.FanoutService + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: kafka_cache_client + with: + capability: fetch + topic: messages + filters: + key: custom-key + headers: + custom-text: custom-value + - guarded: + my_guard: + - echo:messages + when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl + exit: kafka_cache_client + with: + capability: produce + topic: requests + acks: leader_only + key: custom-key + overrides: + custom-text: custom-value + reply-to: responses +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +Roles required by named guard. + +```yaml +routes: + - guarded: + my_guard: + - read:messages +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route when adapting `grpc` request-response streams to `kafka` topic streams. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - method: example.EchoService/* + metadata: + custom-text: custom value + custom-binary: + base64: Y3VzdG9tIHZhbHVl +``` + +##### when[].method + +> `string` + +Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. + +##### when[].metadata + +> `map` of `name: value` properties + +Metadata header name value pairs (all match). + +Each metadata header value can be `string` or `object` with `base64` property. + +##### metadata.base64 + +> `string` + +Base64 encoded value for binary metadata header. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: kafka_cache_client +``` + +#### routes[].with\* + +> **oneOf**: [fetch](#with-capability-fetch) | [produce](#with-capability-produce) + +Defines the route with the `fetch` capability. + +```yaml +with: + capability: fetch +``` + +Defines the route with the `produce` capability. + +```yaml +with: + capability: produce +``` + +#### with.capability: fetch + +> `object` + +Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. + +Routes with `fetch` capability map `grpc` `Empty` requests to a `kafka` topic, supporting filtered retrieval of messages with a specific key or headers, or unfiltered retrieval of all messages in the topic merged into a unified response. + +Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers. + +Reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the `grpc` client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new `grpc` request. + +```yaml +with: + capability: fetch + topic: messages + filters: + key: custom-key + headers: + custom-text: custom-value +``` + +##### with.topic + +> `string` + +The name of a Kafka topic. + +##### with.filters + +> `array` of `object` + +List of criteria (any match) to this filter. Kafka filters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. All specified headers and key must match for the combined criteria to match. + +##### filters[].key + +> `string` + +The filter criteria for the Kafka message key. + +##### filters[].headers + +> `map` of `name: value` properties + +The filter criteria for the Kafka message headers. + +#### with.capability: produce + +> `object` + +Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic produce streams. + +Routes with `produce` capability map any `grpc` request-response to a correlated stream of `kafka` messages. The `grpc` request message(s) are sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message(s) are received and processed by the `kafka` `requests` topic consumer, it produces response message(s) to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. + +Requests including an `idempotency-key` `grpc` metadata header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. + +```yaml +with: + capability: produce + topic: requests + acks: leader_only + key: custom-key + overrides: + custom-text: custom-value + reply-to: responses +``` + +##### with.topic + +> `string` + +The name of a Kafka topic for requests. + +##### with.acks + +> `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` + +Kafka acknowledgment mode + +##### with.key + +> `string` + +The Kafka message key to include with each message. + +##### with.overrides + +> `map` of `name: value` properties + +The Kafka message headers to inject with each message. + +##### with.reply-to + +> `string` + +The name of the Kafka topic for correlated responses. diff --git a/src/reference/config/bindings/grpc-kafka/README.md b/src/reference/config/bindings/grpc-kafka/README.md index 3d4cbbcb..219135cc 100644 --- a/src/reference/config/bindings/grpc-kafka/README.md +++ b/src/reference/config/bindings/grpc-kafka/README.md @@ -17,10 +17,10 @@ Zilla runtime grpc-kafka binding. ## proxy +> [Full Config](./proxy.md) + Behave as an `grpc-kafka` `proxy`. ```yaml {3} ``` - -> [Full Config](./proxy.md) diff --git a/src/reference/config/bindings/grpc-kafka/proxy.md b/src/reference/config/bindings/grpc-kafka/proxy.md index 12f3691e..0d92f84c 100644 --- a/src/reference/config/bindings/grpc-kafka/proxy.md +++ b/src/reference/config/bindings/grpc-kafka/proxy.md @@ -1,8 +1,8 @@ --- -shortTitle: grpc-kafka proxy +shortTitle: proxy --- -# grpc-kafka proxy Binding +# grpc-kafka proxy The grpc-kafka proxy binding adapts `grpc` request-response streams to `kafka` topic streams. @@ -12,319 +12,7 @@ The grpc-kafka proxy binding adapts `grpc` request-response streams to `kafka` t ## Configuration (\* required) -### options - -> `object` - -`grpc-kafka`-specific options for adapting `grpc` request-response streams to `kafka` topic streams. - -```yaml -options: - idempotency: - metadata: idempotency-key - reliability: - field: 32767 - metadata: last-message-id - correlation: - headers: - service: zilla:service - method: zilla:method - correlation-id: zilla:correlation-id - reply-to: zilla:reply-to -``` - -#### options.idempotency - -> `object` - -Metadata header used to specify the idempotency key when adapting `grpc` request-response streams to `kafka` topic streams. - -##### idempotency.metadata - -> `string` | Default: `"idempotency-key"` - -The `grpc` metadata header name for idempotency key. - -#### options.reliability - -> `object` - -Properties used when handling stream recovery. - -##### reliability.field - -> `integer` | Default: `32767` - -The `grpc` unknown field number to send the `message-id`. - -##### reliability.metadata - -> `string` | Default: `"last-message-id"` - -The `grpc` metadata header name for the last `message-id` seen when resuming a stream. - -#### options.correlation - -> `object` - -Kafka request message headers injected when adapting `grpc` request-response streams to `kafka` topic streams. - -##### correlation.headers - -> `map` of `name: value` properties - -Kafka request message reply to and correlation id header names injected when adapting `grpc` request-response streams to `kafka` topic streams. - -##### headers.service - -> `string` | Default: `"zilla:service"` - -Kafka header name for `grpc` service. - -##### headers.method - -> `string` | Default: `"zilla:method"` - -Kafka header name for `grpc` method. - -##### headers.correlation-id - -> `string` | Default: `"zilla:correlation-id"` - -Kafka header name for request-response correlation identifier. - -##### headers.reply-to - -> `string` | Default: `"zilla:reply-to"` - -Kafka header name for reply-to topic. - -### routes - -> `array` of `object` - -Conditional `grpc-kafka`-specific routes for adapting `grpc` request-response streams to `kafka` topic streams. - -```yaml -routes: - - guarded: - my_guard: - - read:messages - when: - - service: example.FanoutService - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl - exit: kafka_cache_client - with: - capability: fetch - topic: messages - filters: - key: custom-key - headers: - custom-text: custom-value - - guarded: - my_guard: - - echo:messages - when: - - method: example.EchoService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl - exit: kafka_cache_client - with: - capability: produce - topic: requests - acks: leader_only - key: custom-key - overrides: - custom-text: custom-value - reply-to: responses -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -Roles required by named guard. - -```yaml -routes: - - guarded: - my_guard: - - read:messages -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route when adapting `grpc` request-response streams to `kafka` topic streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - method: example.EchoService/* - metadata: - custom-text: custom value - custom-binary: - base64: Y3VzdG9tIHZhbHVl -``` - -##### when[].method - -> `string` - -Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. - -##### when[].metadata - -> `map` of `name: value` properties - -Metadata header name value pairs (all match). - -Each metadata header value can be `string` or `object` with `base64` property. - -##### metadata.base64 - -> `string` - -Base64 encoded value for binary metadata header. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: kafka_cache_client -``` - -#### routes[].with\* - -> **oneOf**: [fetch](#with-capability-fetch) | [produce](#with-capability-produce) - -Defines the route with the `fetch` capability. - -```yaml -with: - capability: fetch -``` - -Defines the route with the `produce` capability. - -```yaml -with: - capability: produce -``` - -#### with.capability: fetch - -> `object` - -Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. - -Routes with `fetch` capability map `grpc` `Empty` requests to a `kafka` topic, supporting filtered retrieval of messages with a specific key or headers, or unfiltered retrieval of all messages in the topic merged into a unified response. - -Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers. - -Reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the `grpc` client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new `grpc` request. - -```yaml -with: - capability: fetch - topic: messages - filters: - key: custom-key - headers: - custom-text: custom-value -``` - -##### with.topic - -> `string` - -The name of a Kafka topic. - -##### with.filters - -> `array` of `object` - -List of criteria (any match) to this filter. Kafka filters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. All specified headers and key must match for the combined criteria to match. - -##### filters[].key - -> `string` - -The filter criteria for the Kafka message key. - -##### filters[].headers - -> `map` of `name: value` properties - -The filter criteria for the Kafka message headers. - -#### with.capability: produce - -> `object` - -Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic produce streams. - -Routes with `produce` capability map any `grpc` request-response to a correlated stream of `kafka` messages. The `grpc` request message(s) are sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message(s) are received and processed by the `kafka` `requests` topic consumer, it produces response message(s) to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. - -Requests including an `idempotency-key` `grpc` metadata header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. - -```yaml -with: - capability: produce - topic: requests - acks: leader_only - key: custom-key - overrides: - custom-text: custom-value - reply-to: responses -``` - -##### with.topic - -> `string` - -The name of a Kafka topic for requests. - -##### with.acks - -> `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` - -Kafka acknowledgment mode - -##### with.key - -> `string` - -The Kafka message key to include with each message. - -##### with.overrides - -> `map` of `name: value` properties - -The Kafka message headers to inject with each message. - -##### with.reply-to - -> `string` - -The name of the Kafka topic for correlated responses. - + + + ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/grpc/client.md b/src/reference/config/bindings/grpc/client.md index 899194cb..23f646b8 100644 --- a/src/reference/config/bindings/grpc/client.md +++ b/src/reference/config/bindings/grpc/client.md @@ -1,5 +1,5 @@ --- -shortTitle: grpc client +shortTitle: client description: Zilla runtime grpc client binding category: - Binding @@ -7,12 +7,10 @@ tag: - Client --- -# grpc client Binding +# grpc client The grpc client binding adapts `grpc` request-response streams to `http` request-response streams. -The `type:grpc kind:client` binding adapts `grpc` request-response streams to `http` request-response streams. - ```yaml ``` @@ -22,9 +20,3 @@ The `type:grpc kind:client` binding adapts `grpc` request-response streams to `h - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 867bc665..c6d51ca9 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -1,5 +1,5 @@ --- -shortTitle: grpc server +shortTitle: server description: Zilla runtime grpc server binding category: - Binding @@ -7,12 +7,10 @@ tag: - Server --- -# grpc server Binding +# grpc server The grpc server binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. -The `type:grpc kind:server` binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. - ```yaml {4-6,9-13} ``` diff --git a/src/reference/config/bindings/http-filesyste/.partials/proxy.yaml b/src/reference/config/bindings/http-filesyste/.partials/proxy.yaml deleted file mode 100644 index e69de29b..00000000 diff --git a/src/reference/config/bindings/http-filesyste/README.md b/src/reference/config/bindings/http-filesyste/README.md deleted file mode 100644 index bf528886..00000000 --- a/src/reference/config/bindings/http-filesyste/README.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -redirectFrom: /reference/config/bindings/binding-http-filesystem.html -dir: - collapsible: false - link: true -shortTitle: http-filesystem -description: Zilla runtime http-filesystem binding -category: - - Binding -tag: - - Proxy ---- - -# http-filesystem Binding - -Zilla runtime http-filesystem binding. - -```yaml {2} -http_filesystem_proxy: - type: http-filesystem - kind: proxy - routes: - - when: - - path: /{path} - exit: filesystem_server - with: - path: ${params.path} -``` - -## Configuration (\* required) - -### type: http-filesystem\* - -Defines a binding with `http-filesystem` support, with `proxy` behavior. - -The `proxy` kind `http-filesystem` binding adapts `http` data streams into `filesystem` data streams by mapping the path from an inbound `http` `GET` request into a filesystem relative path. - -Behaves as a web server when combined with `tcp,` `tls`, `http` and `filesystem` bindings. - -### kind: proxy - -Behave as an `http-filesystem` `proxy`. - -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: filesystem_server -``` - -### routes - -> `array` of `object` - -Conditional `http-kafka`-specific routes for adapting `http` data streams into `filesystem` data streams. - -```yaml -routes: - - when: - - path: /{path} - exit: filesystem_server - with: - path: ${params.path} -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route when adapting `http` data streams into `filesystem` data streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - path: /{path} -``` - -##### when[].path\* - -> `string` - -Path with optional embedded parameter names, such as `/{path}`. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: filesystem_server -``` - -#### routes[].with - -> `object` - -Filesystem parameters used when adapting `http` data streams into `filesystem` data streams. - -##### with.path\* - -> `string` - -Topic name, optionally referencing path parameter such as `${params.path}`. - -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "http" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - http.* -``` - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/http-filesyste/proxy.md b/src/reference/config/bindings/http-filesyste/proxy.md deleted file mode 100644 index 4c88c0b4..00000000 --- a/src/reference/config/bindings/http-filesyste/proxy.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -shortTitle: proxy ---- - -# http-filesyste proxy - -The http-filesyste proxy binding diff --git a/src/reference/config/bindings/http-filesystem/.partials/proxy.yaml b/src/reference/config/bindings/http-filesystem/.partials/proxy.yaml new file mode 100644 index 00000000..ce9f7b5b --- /dev/null +++ b/src/reference/config/bindings/http-filesystem/.partials/proxy.yaml @@ -0,0 +1,9 @@ + http_filesystem_proxy: + type: http-filesystem + kind: proxy + routes: + - when: + - path: /{path} + exit: filesystem_server + with: + path: ${params.path} diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md new file mode 100644 index 00000000..1e556f9c --- /dev/null +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -0,0 +1,71 @@ +### routes + +> `array` of `object` + +Conditional `http-kafka`-specific routes for adapting `http` data streams into `filesystem` data streams. + +```yaml +routes: + - when: + - path: /{path} + exit: filesystem_server + with: + path: ${params.path} +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route when adapting `http` data streams into `filesystem` data streams. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - path: /{path} +``` + +##### when[].path\* + +> `string` + +Path with optional embedded parameter names, such as `/{path}`. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: filesystem_server +``` + +#### routes[].with + +> `object` + +Filesystem parameters used when adapting `http` data streams into `filesystem` data streams. + +##### with.path\* + +> `string` + +Topic name, optionally referencing path parameter such as `${params.path}`. diff --git a/src/reference/config/bindings/http-filesystem/README.md b/src/reference/config/bindings/http-filesystem/README.md new file mode 100644 index 00000000..0053a88f --- /dev/null +++ b/src/reference/config/bindings/http-filesystem/README.md @@ -0,0 +1,28 @@ +--- +redirectFrom: /reference/config/bindings/binding-http-filesystem.html +dir: + collapsible: false + link: true +shortTitle: http-filesystem +description: Zilla runtime http-filesystem binding +category: + - Binding +tag: + - Proxy +--- + +# http-filesystem Binding + +Defines a binding with `http-filesystem` support, with `proxy` behavior. + +## proxy + +> [Full config](./proxy.md) + +The `proxy` kind `http-filesystem` binding adapts `http` data streams into `filesystem` data streams by mapping the path from an inbound `http` `GET` request into a filesystem relative path. + +Behaves as a web server when combined with `tcp,` `tls`, `http` and `filesystem` bindings. + +```yaml {3} + +``` diff --git a/src/reference/config/bindings/http-filesystem/proxy.md b/src/reference/config/bindings/http-filesystem/proxy.md new file mode 100644 index 00000000..22d85edd --- /dev/null +++ b/src/reference/config/bindings/http-filesystem/proxy.md @@ -0,0 +1,19 @@ +--- +shortTitle: proxy +--- + +# http-filesystem proxy + +The http-filesystem proxy binding adapts `http` data streams into `filesystem` data streams by mapping the path from an inbound `http` `GET` request into a filesystem relative path. + +Behaves as a web server when combined with `tcp,` `tls`, `http` and `filesystem` bindings. + +```yaml {3} + +``` + +## Configuration (\* required) + + + + diff --git a/src/reference/config/bindings/http-kafka/README.md b/src/reference/config/bindings/http-kafka/README.md index 709587f2..6772660a 100644 --- a/src/reference/config/bindings/http-kafka/README.md +++ b/src/reference/config/bindings/http-kafka/README.md @@ -61,7 +61,9 @@ http_kafka_proxy: The `proxy` kind `http-kafka` binding adapts `http` request-response streams to `kafka` topic streams. -### kind: proxy +## proxy + +> [Full config](./proxy.md) Behave as an `http-kafka` `proxy`. diff --git a/src/reference/config/bindings/http-kafka/proxy.md b/src/reference/config/bindings/http-kafka/proxy.md index 247a0145..2d173ba0 100644 --- a/src/reference/config/bindings/http-kafka/proxy.md +++ b/src/reference/config/bindings/http-kafka/proxy.md @@ -5,3 +5,14 @@ shortTitle: proxy # http-kafka proxy The http-kafka proxy binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/http/.partials/client.yaml b/src/reference/config/bindings/http/.partials/client.yaml index e69de29b..c6e297ce 100644 --- a/src/reference/config/bindings/http/.partials/client.yaml +++ b/src/reference/config/bindings/http/.partials/client.yaml @@ -0,0 +1,7 @@ + http_client: + type: http + kind: client + options: + versions: + - h2 + exit: tcp_client diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md new file mode 100644 index 00000000..6d63531a --- /dev/null +++ b/src/reference/config/bindings/http/.partials/options.md @@ -0,0 +1,237 @@ +### options + +> `object` + +`http`-specific options. + +```yaml +options: + access-control: + policy: cross-origin + authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} + overrides: + custom-text: custom-value +``` + +#### options.requests + +> `array` of `object` + +##### requests[].content + +> `object` of a named [`model`](../models/) + +Enforce validation for the request content. + +##### requests[].content-type + +> `string` + + + +##### requests[].headers + +> `string` + + + +##### requests[].method + +> `enum` [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ] + + + +##### requests[].params + +> `string` + + +###### params.path + +> `object` of a named [`model`](../models/) + +Enforce validation for path + +###### params.query + +> `object` of a named [`model`](../models/) + +Enforce validation for query + +##### requests[].path + +> `string` + + + +##### requests[].responses + +> `array` of `object` + + +###### responses[].content + +> `string` + + + +###### responses[].content-type + +> `array` of `string` + + + +###### responses[].headers + +> `map` of "name: [model](../models/)" properties + +Enforce validation for response headers. + +```yaml +headers: + my-header: + type: string + maxLength: 100 +``` + +###### responses[].status + +> `string` + + +#### options.versions + +Supported protocol versions. + +#### options.access-control + +> **oneOf**: [same-origin](#access-control-policy-same-origin) | [cross-origin](#access-control-policy-cross-origin) + +Access control policy for the `HTTP` protocol. + +##### access-control.policy\* + +> `enum` [ "same-origin" , "cross-origin" ] + +Supported access control policies. + +##### access-control.policy: same-origin + +> `string` + +Extra properties aren't needed when using Same Origin access control for the `HTTP` protocol. + +```yaml +options: + access-control: + policy: same-origin +``` + +##### access-control.policy: cross-origin + +> `object` + +Additional properties that cover Cross Origin Resource Sharing (CORS) access control for the `HTTP` protocol. + +```yaml +options: + access-control: + policy: cross-origin +``` + +##### access-control.allow + +> `object` | Default: all origins, methods and headers, without credentials + +Allowed cross-origin request origins, methods, headers and credentials. +CORS allowed request origins, methods, headers and credentials for the `HTTP` protocol. + +###### allow.origins + +> `array` of `string` + +Allowed request origins. + +###### allow.methods + +> `array` of `string` + +Allowed request methods. + +###### allow.headers + +> `array` of `string` + +Allowed request headers. + +###### allow.credentials + +> `boolean` + +Support `fetch` credentials mode `include`. + +##### access-control.max-age + +> `integer` + +Maximum cache age (in seconds) for allowed headers and methods. + +##### access-control.expose + +> `object` | Default: all response headers + +Exposed cross-origin response headers. + +###### expose.headers + +> `array` of `string` + +Exposed response headers. + +#### options.authorization + +> `object` as map of named objects + +Authorization by a named guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + +##### authorization.credentials + +> `object` + +Defines how to extract credentials from the HTTP request. + +###### credentials.cookies + +> `object` as map of `string` + +Named cookie value pattern with `{credentials}`. + +###### credentials.headers + +> `map` of `name: value` properties + +Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. + +###### credentials.query + +> `object` as map of `string` + +Named query parameter value pattern with `{credentials}`. + +#### options.overrides + +> `map` of `name: value` properties + +Request header overrides. diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md new file mode 100644 index 00000000..cbd6b1b9 --- /dev/null +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -0,0 +1,61 @@ +### routes + +> `array` of `object` + +Conditional `http`-specific routes. + +```yaml +routes: + - when: + - headers: + ":scheme": https + ":authority": example.com:443 + exit: echo_server +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - headers: + ":scheme": https + ":authority": example.com:443 +``` + +##### when[].headers + +> `map` of `name: value` properties + +Header name value pairs (all match). + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: echo_server +``` diff --git a/src/reference/config/bindings/http/.partials/server.yaml b/src/reference/config/bindings/http/.partials/server.yaml index e69de29b..fa3e9197 100644 --- a/src/reference/config/bindings/http/.partials/server.yaml +++ b/src/reference/config/bindings/http/.partials/server.yaml @@ -0,0 +1,17 @@ + http_server: + type: http + kind: server + options: + access-control: + policy: cross-origin + authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} + routes: + - when: + - headers: + ":scheme": https + ":authority": example.com:443 + exit: echo_server diff --git a/src/reference/config/bindings/http/README.md b/src/reference/config/bindings/http/README.md index 782c7763..55f0ef6e 100644 --- a/src/reference/config/bindings/http/README.md +++ b/src/reference/config/bindings/http/README.md @@ -13,35 +13,11 @@ tag: # http Binding -Zilla runtime http binding. - -```yaml {2} -http_server: - type: http - kind: server - options: - access-control: - policy: cross-origin - authorization: - my_jwt_guard: - credentials: - headers: - authorization: Bearer {credentials} - routes: - - when: - - headers: - ":scheme": https - ":authority": example.com:443 - exit: echo_server -``` - -## Configuration (\* required) - -### type: http\* - Defines a binding with `http` protocol support, with `server` or `client` behavior. -### kind: server +## server + +> [Full config](./server.md) The `server` kind `http` binding decodes `HTTP/1.1` protocol or `HTTP/2` protocol on the inbound network stream, producing higher level application streams for each request. @@ -51,383 +27,18 @@ Authorization is enforced by a [`guard`](../../config/overview.md#guards) and th Conditional routes based on `http` request headers are used to route these application streams to an `exit` binding. -```yaml {2} -http_server: - type: http - kind: server - options: - access-control: - policy: cross-origin - authorization: - my_jwt_guard: - credentials: - headers: - authorization: Bearer {credentials} - routes: - - when: - - headers: - ":scheme": https - ":authority": example.com:443 - exit: echo_server +```yaml {3} + ``` +## client -### kind: client +> [Full config](./client.md) The `client` kind `http` binding receives inbound application streams and encodes each request as a network stream via `HTTP/1.1` protocol. Note that the same network stream can be reused to encode multiple `HTTP/1.1` requests. Conditional routes based on `http` request headers are used to route these network streams to an `exit` binding. -```yaml {2} -http_client: - type: http - kind: client - options: - versions: - - h2 - exit: tcp_client -``` - -### options - -> `object` - -`http`-specific options. - -```yaml -options: - access-control: - policy: cross-origin - authorization: - my_jwt_guard: - credentials: - headers: - authorization: Bearer {credentials} - overrides: - custom-text: custom-value -``` - -#### options.requests - -> `array` of `object` - -##### requests[].content - -> `object` of a named [`model`](../models/) - -Enforce validation for the request content. - -##### requests[].content-type - -> `string` - - - -##### requests[].headers - -> `string` - - - -##### requests[].method - -> `enum` [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ] - - - -##### requests[].params - -> `string` - - -###### params.path - -> `object` of a named [`model`](../models/) - -Enforce validation for path - -###### params.query - -> `object` of a named [`model`](../models/) - -Enforce validation for query - -##### requests[].path - -> `string` - - - -##### requests[].responses - -> `array` of `object` - - -###### responses[].content - -> `string` - - - -###### responses[].content-type - -> `array` of `string` - - - -###### responses[].headers - -> `map` of "name: [model](../models/)" properties - -Enforce validation for response headers. - -```yaml -headers: - my-header: - type: string - maxLength: 100 -``` - - - - -###### responses[].status - -> `string` - - - - - - -#### options.versions - -Supported protocol versions. - -#### options.access-control - -> **oneOf**: [same-origin](#access-control-policy-same-origin) | [cross-origin](#access-control-policy-cross-origin) - -Access control policy for the `HTTP` protocol. - -##### access-control.policy\* - -> `enum` [ "same-origin" , "cross-origin" ] - -Supported access control policies. - -##### access-control.policy: same-origin - -> `string` - -Extra properties aren't needed when using Same Origin access control for the `HTTP` protocol. - -```yaml -options: - access-control: - policy: same-origin -``` - -##### access-control.policy: cross-origin - -> `object` - -Additional properties that cover Cross Origin Resource Sharing (CORS) access control for the `HTTP` protocol. - -```yaml -options: - access-control: - policy: cross-origin +```yaml {3} + ``` - -##### access-control.allow - -> `object` | Default: all origins, methods and headers, without credentials - -Allowed cross-origin request origins, methods, headers and credentials. -CORS allowed request origins, methods, headers and credentials for the `HTTP` protocol. - -###### allow.origins - -> `array` of `string` - -Allowed request origins. - -###### allow.methods - -> `array` of `string` - -Allowed request methods. - -###### allow.headers - -> `array` of `string` - -Allowed request headers. - -###### allow.credentials - -> `boolean` - -Support `fetch` credentials mode `include`. - -##### access-control.max-age - -> `integer` - -Maximum cache age (in seconds) for allowed headers and methods. - -##### access-control.expose - -> `object` | Default: all response headers - -Exposed cross-origin response headers. - -###### expose.headers - -> `array` of `string` - -Exposed response headers. - -#### options.authorization - -> `object` as map of named objects - -Authorization by a named guard for the `HTTP/1.1` and `HTTP/2` protocols. - -```yaml -authorization: - my_jwt_guard: - credentials: - headers: - authorization: Bearer {credentials} -``` - -##### authorization.credentials - -> `object` - -Defines how to extract credentials from the HTTP request. - -###### credentials.cookies - -> `object` as map of `string` - -Named cookie value pattern with `{credentials}`. - -###### credentials.headers - -> `map` of `name: value` properties - -Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -###### credentials.query - -> `object` as map of `string` - -Named query parameter value pattern with `{credentials}`. - -#### options.overrides - -> `map` of `name: value` properties - -Request header overrides. - - - -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: echo_server -``` - -### routes - -> `array` of `object` - -Conditional `http`-specific routes. - -```yaml -routes: - - when: - - headers: - ":scheme": https - ":authority": example.com:443 - exit: echo_server -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - headers: - ":scheme": https - ":authority": example.com:443 -``` - -##### when[].headers - -> `map` of `name: value` properties - -Header name value pairs (all match). - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: echo_server -``` - -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "http" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - http.* -``` - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/http/client.md b/src/reference/config/bindings/http/client.md index 05b3a3b4..100a9e62 100644 --- a/src/reference/config/bindings/http/client.md +++ b/src/reference/config/bindings/http/client.md @@ -4,4 +4,17 @@ shortTitle: client # http client -The http client binding +The http client binding receives inbound application streams and encodes each request as a network stream via `HTTP/1.1` protocol. Note that the same network stream can be reused to encode multiple `HTTP/1.1` requests. + +Conditional routes based on `http` request headers are used to route these network streams to an `exit` binding. + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 4a1256c2..19d58ac0 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -4,4 +4,21 @@ shortTitle: server # http server -The http server binding +The http server binding decodes `HTTP/1.1` protocol or `HTTP/2` protocol on the inbound network stream, producing higher level application streams for each request. + +Cross-Origin Resource Sharing (CORS) is supported by specifying an access control policy of `cross-origin`. Further configuration allows for finer-grained access control including specific request origins, methods and headers allowed, and specific response headers exposed. + +Authorization is enforced by a [`guard`](../../config/overview.md#guards) and the credentials can be extracted from a cookie, header or query parameter. + +Conditional routes based on `http` request headers are used to route these application streams to an `exit` binding. + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/kafka-grpc/README.md b/src/reference/config/bindings/kafka-grpc/README.md index ffb8626a..5fa738a4 100644 --- a/src/reference/config/bindings/kafka-grpc/README.md +++ b/src/reference/config/bindings/kafka-grpc/README.md @@ -51,7 +51,9 @@ The `grpc` request message is received from a `requests` topic, with a `zilla:co Note that `grpc` requests and responses can be `unary` or `streaming`. -### kind: remote_server +## remote_server + +> [Full config](./remote_server.md) The `remote_server` kind `kafka-grpc` binding adapts `kafka` topic streams to `grpc` request-response streams. diff --git a/src/reference/config/bindings/kafka-grpc/remote_server.md b/src/reference/config/bindings/kafka-grpc/remote_server.md index a2cfccc4..42440570 100644 --- a/src/reference/config/bindings/kafka-grpc/remote_server.md +++ b/src/reference/config/bindings/kafka-grpc/remote_server.md @@ -5,3 +5,14 @@ shortTitle: remote_server # kafka-grpc remote_server The kafka-grpc remote_server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/kafka-proxy/README.md b/src/reference/config/bindings/kafka-proxy/README.md index ae368419..6b40b348 100644 --- a/src/reference/config/bindings/kafka-proxy/README.md +++ b/src/reference/config/bindings/kafka-proxy/README.md @@ -39,7 +39,9 @@ kafka_proxy: Defines a binding with `kafka-proxy` support, with `proxy` behavior. -### kind: proxy +## proxy + +> [Full config](./proxy.md) Behave as a `proxy`. @@ -117,7 +119,7 @@ Default exit binding when no conditional routes are viable. exit: tls_client ``` - + --- diff --git a/src/reference/config/bindings/kafka-proxy/proxy.md b/src/reference/config/bindings/kafka-proxy/proxy.md index 80d36b47..71e768f0 100644 --- a/src/reference/config/bindings/kafka-proxy/proxy.md +++ b/src/reference/config/bindings/kafka-proxy/proxy.md @@ -5,3 +5,14 @@ shortTitle: proxy # kafka-proxy proxy The kafka-proxy proxy binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/kafka/README.md b/src/reference/config/bindings/kafka/README.md index ce142cf3..5ce7ed90 100644 --- a/src/reference/config/bindings/kafka/README.md +++ b/src/reference/config/bindings/kafka/README.md @@ -39,9 +39,13 @@ kafka_client: Defines a binding with `kafka` protocol support, with `cache_client`, `cache_server` or `client` behavior. -### kind: cache_client +## cache_client -### kind: cache_server +> [Full config](./cache_client.md) + +## cache_server + +> [Full config](./cache_server.md) The `cache_client` and `cache_server` kinds combine to provide a persistent cache of `kafka` messages per `topic` `partition` honoring the `kafka` `topic` configuration for message expiration and compaction. Messages ordering is guaranteed per `partition` and messages are merged into a unified stream for the `topic` spanning all `partitions`. @@ -57,7 +61,9 @@ When the `kafka` `topic` is not compacted, then the binding can be configured to The `cache_client` and `cache_server` also combine to provide a staging area when producing new messages as `kafka` requires exact message length up front when producing new messages and `kafka` does not support producing multiple messages in parallel over the same network connection. -### kind: client +## client + +> [Full config](./client.md) The `client` kind `kafka` binding receives inbound application streams and encodes each as a network stream via `kafka` request-response protocol. Note that the same network stream can be reused to encode multiple `kafka` requests, including both `fetch` and `produce` requests. @@ -146,15 +152,7 @@ SASL username. SASL password. -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: echo_server -``` + ### routes @@ -198,7 +196,7 @@ Next binding when following this route. exit: echo_server ``` - + --- diff --git a/src/reference/config/bindings/kafka/cache_client.md b/src/reference/config/bindings/kafka/cache_client.md index 083adb31..978525d0 100644 --- a/src/reference/config/bindings/kafka/cache_client.md +++ b/src/reference/config/bindings/kafka/cache_client.md @@ -5,3 +5,14 @@ shortTitle: cache_client # kafka cache_client The kafka cache_client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index 7af6b36c..1a9cf8cc 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -5,3 +5,14 @@ shortTitle: cache_server # kafka cache_server The kafka cache_server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/kafka/client.md b/src/reference/config/bindings/kafka/client.md index e2553061..8c5d1c54 100644 --- a/src/reference/config/bindings/kafka/client.md +++ b/src/reference/config/bindings/kafka/client.md @@ -5,3 +5,14 @@ shortTitle: client # kafka client The kafka client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/mqtt-kafka/README.md b/src/reference/config/bindings/mqtt-kafka/README.md index 824a6a9e..fd4c8602 100644 --- a/src/reference/config/bindings/mqtt-kafka/README.md +++ b/src/reference/config/bindings/mqtt-kafka/README.md @@ -45,7 +45,9 @@ mqtt_kafka_proxy: Defines a binding with `mqtt-kafka` support, with `proxy` behavior. -### kind: proxy +## proxy + +> [Full config](./proxy.md) Behave as a `mqtt-kafka` `proxy`. @@ -252,7 +254,7 @@ Default exit binding when no conditional routes are viable. exit: kafka_cache_client ``` - + --- diff --git a/src/reference/config/bindings/mqtt-kafka/proxy.md b/src/reference/config/bindings/mqtt-kafka/proxy.md index 9477ec16..eb00c9a3 100644 --- a/src/reference/config/bindings/mqtt-kafka/proxy.md +++ b/src/reference/config/bindings/mqtt-kafka/proxy.md @@ -5,3 +5,14 @@ shortTitle: proxy # mqtt-kafka proxy The mqtt-kafka proxy binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/mqtt/README.md b/src/reference/config/bindings/mqtt/README.md index 0ac06a7e..4b6e75a2 100644 --- a/src/reference/config/bindings/mqtt/README.md +++ b/src/reference/config/bindings/mqtt/README.md @@ -46,25 +46,21 @@ mqtt_server: Defines a binding with `mqtt` protocol support, with `server` behavior. -### kind: server +## server + +> [Full config](./server.md) The `server` kind `mqtt` binding decodes the MQTT protocol on the inbound network stream, producing higher level application streams for each `publish` or `subscribe` `topic`. The `session` state is also described by a higher level application stream. Conditional routes based on the `topic` `name` are used to route these application streams to an `exit` binding. -### kind: client - -The `client` kind `mqtt` binding encodes the MQTT protocol to the outbound network stream. - -### exit +## client -> `string` +> [Full config](./client.md) -Default exit binding when no conditional routes are viable. +The `client` kind `mqtt` binding encodes the MQTT protocol to the outbound network stream. -```yaml -exit: echo_server -``` + ### options @@ -243,7 +239,7 @@ routes: exit: mqtt_kafka_proxy ``` - + --- diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index 2955af94..305c9cf2 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -5,3 +5,14 @@ shortTitle: client # mqtt client The mqtt client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index fbe134f9..6544acfe 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -5,3 +5,14 @@ shortTitle: server # mqtt server The mqtt server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/openapi-asyncapi/README.md b/src/reference/config/bindings/openapi-asyncapi/README.md index 33c1ad36..873e7cbd 100644 --- a/src/reference/config/bindings/openapi-asyncapi/README.md +++ b/src/reference/config/bindings/openapi-asyncapi/README.md @@ -48,7 +48,9 @@ openapi_asyncapi_proxy: The `proxy` kind `openapi-asyncapi` binding adapts OpenAPI request-response streams to AsyncAPI streams. -### kind: proxy +## proxy + +> [Full config](./proxy.md) Behave as an `openapi-asyncapi` `proxy`. @@ -178,7 +180,7 @@ AsyncAPI spec identifier that the route exits with to the next binding AsyncAPI OperationId that the route exits with to the next binding - + --- diff --git a/src/reference/config/bindings/openapi-asyncapi/proxy.md b/src/reference/config/bindings/openapi-asyncapi/proxy.md index a85fb041..98c8a817 100644 --- a/src/reference/config/bindings/openapi-asyncapi/proxy.md +++ b/src/reference/config/bindings/openapi-asyncapi/proxy.md @@ -5,3 +5,14 @@ shortTitle: proxy # openapi-asyncapi proxy The openapi-asyncapi proxy binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/openapi/README.md b/src/reference/config/bindings/openapi/README.md index 91bf12cc..0f70d084 100644 --- a/src/reference/config/bindings/openapi/README.md +++ b/src/reference/config/bindings/openapi/README.md @@ -53,11 +53,15 @@ openapi_client: Defines a binding with `openapi` spec, with `server` or `client` behavior. -### kind: server +## server + +> [Full config](./server.md) The `server` kind `openapi` binding creates composite of `tcp`, `tls`, and `http` bindings with server kind and adapts HTTP request-response streams to OpenAPI request-response streams. -### kind: client +## client + +> [Full config](./client.md) The `client` kind `openapi` binding creates composite of `http`, `tls`, and `tcp` bindings with client kind and adapts OpenAPI request-response streams to HTTP request-response streams. @@ -239,7 +243,7 @@ Default exit binding. exit: echo_server ``` - + --- diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md index 6eb3e67c..c902b27d 100644 --- a/src/reference/config/bindings/openapi/client.md +++ b/src/reference/config/bindings/openapi/client.md @@ -5,3 +5,14 @@ shortTitle: client # openapi client The openapi client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md index 3231fa84..3f2525c4 100644 --- a/src/reference/config/bindings/openapi/server.md +++ b/src/reference/config/bindings/openapi/server.md @@ -5,3 +5,14 @@ shortTitle: server # openapi server The openapi server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/proxy/README.md b/src/reference/config/bindings/proxy/README.md index e7b72a04..1de6a51b 100644 --- a/src/reference/config/bindings/proxy/README.md +++ b/src/reference/config/bindings/proxy/README.md @@ -35,23 +35,19 @@ proxy_server: Defines a binding with `proxy` protocol support, with `server` or `client` behavior. Conditional routes based on the network transport type or network addresses are used to route these streams to an `exit` binding. -### kind: server +## server -The `server` kind `proxy` binding decodes `Proxy v2` protocol on the inbound network stream, producing higher level application streams for each request. - -### kind: client +> [Full config](./server.md) -The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via `Proxy v2` protocol. +The `server` kind `proxy` binding decodes `Proxy v2` protocol on the inbound network stream, producing higher level application streams for each request. -### exit +## client -> `string` +> [Full config](./client.md) -Default exit binding when no conditional routes are viable. +The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via `Proxy v2` protocol. -```yaml -exit: echo_server -``` + ### routes @@ -150,7 +146,7 @@ routes: exit: echo_server ``` - + --- diff --git a/src/reference/config/bindings/proxy/client.md b/src/reference/config/bindings/proxy/client.md index 18b118f5..88d45e77 100644 --- a/src/reference/config/bindings/proxy/client.md +++ b/src/reference/config/bindings/proxy/client.md @@ -5,3 +5,14 @@ shortTitle: client # proxy client The proxy client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/proxy/server.md b/src/reference/config/bindings/proxy/server.md index 25de1d13..c8c8e9f3 100644 --- a/src/reference/config/bindings/proxy/server.md +++ b/src/reference/config/bindings/proxy/server.md @@ -5,3 +5,14 @@ shortTitle: server # proxy server The proxy server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/sse-kafka/README.md b/src/reference/config/bindings/sse-kafka/README.md index ac86bdcc..533b2fce 100644 --- a/src/reference/config/bindings/sse-kafka/README.md +++ b/src/reference/config/bindings/sse-kafka/README.md @@ -35,7 +35,9 @@ sse_kafka_proxy: Defines a binding with `sse-kafka` support, with `proxy` behavior. -### kind: proxy +## proxy + +> [Full config](./proxy.md) The `proxy` kind `sse-kafka` binding adapts `sse` data streams into `kafka` data streams, so that `kafka` messages can be delivered to `sse` clients. diff --git a/src/reference/config/bindings/sse-kafka/proxy.md b/src/reference/config/bindings/sse-kafka/proxy.md index 714a343d..2791066f 100644 --- a/src/reference/config/bindings/sse-kafka/proxy.md +++ b/src/reference/config/bindings/sse-kafka/proxy.md @@ -5,3 +5,14 @@ shortTitle: proxy # sse-kafka proxy The sse-kafka proxy binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/sse/README.md b/src/reference/config/bindings/sse/README.md index d7313446..12e15cfa 100644 --- a/src/reference/config/bindings/sse/README.md +++ b/src/reference/config/bindings/sse/README.md @@ -28,13 +28,17 @@ sse_server: Defines a binding with Server Sent Events (sse) protocol support, with `server` behavior. -### kind: server +## server + +> [Full config](./server.md) The `server` kind `sse` binding converts inbound `http` request-response streams into `sse` request-response streams. Messages received on the `sse` response stream are encoded using `Server Sent Events` protocol, including support for custom `event` types and last event `id`. -### kind: client +## client + +> [Full config](./client.md) The `client` kind `sse` binding converts outbound `see` request-response streams into `http` request-response streams. diff --git a/src/reference/config/bindings/sse/client.md b/src/reference/config/bindings/sse/client.md index 92b4e9c9..f8a69bef 100644 --- a/src/reference/config/bindings/sse/client.md +++ b/src/reference/config/bindings/sse/client.md @@ -5,3 +5,14 @@ shortTitle: client # sse client The sse client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/sse/server.md b/src/reference/config/bindings/sse/server.md index 3b5278ee..19f981d3 100644 --- a/src/reference/config/bindings/sse/server.md +++ b/src/reference/config/bindings/sse/server.md @@ -5,3 +5,14 @@ shortTitle: server # sse server The sse server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/tcp/README.md b/src/reference/config/bindings/tcp/README.md index 43d03e8d..c32b2cc8 100644 --- a/src/reference/config/bindings/tcp/README.md +++ b/src/reference/config/bindings/tcp/README.md @@ -33,11 +33,15 @@ Defines a binding with `tcp` protocol support, with `server` or `client` behavio Conditional routes based on the hostname authority and network address mask are used to route these streams to an `exit` binding. -### kind: server +## server + +> [Full config](./server.md) The `server` kind `tcp` binding listens for inbound socket connections, producing higher level application streams for each remote `tcp` client. -### kind: client +## client + +> [Full config](./client.md) The `client` kind `tcp` binding receives inbound application streams and initiates outbound `tcp` network connections to a remote `tcp` server address. @@ -125,7 +129,7 @@ routes: exit: echo_server ``` - + --- diff --git a/src/reference/config/bindings/tcp/client.md b/src/reference/config/bindings/tcp/client.md index b16843a6..cb7bf38f 100644 --- a/src/reference/config/bindings/tcp/client.md +++ b/src/reference/config/bindings/tcp/client.md @@ -5,3 +5,14 @@ shortTitle: client # tcp client The tcp client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md index e73afb1f..a7910b82 100644 --- a/src/reference/config/bindings/tcp/server.md +++ b/src/reference/config/bindings/tcp/server.md @@ -5,3 +5,14 @@ shortTitle: server # tcp server The tcp server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/tls/README.md b/src/reference/config/bindings/tls/README.md index ae46db32..5e2cafb1 100644 --- a/src/reference/config/bindings/tls/README.md +++ b/src/reference/config/bindings/tls/README.md @@ -39,7 +39,9 @@ tls_server: Defines a binding with `tls` protocol support, with `server`, `client` or `proxy` behavior. -### kind: server +## server + +> [Full config](./server.md) The `server` kind tls binding decodes encrypted TLS protocol on the inbound network stream, producing higher level cleartext application streams for each request. @@ -47,7 +49,9 @@ Certificates and keys required to complete the TLS handshake are provided by a ` Conditional routes based on `tls` hostname authority or negotiated ALPN protocol are used to route these streams to an `exit` binding. -### kind: client +## client + +> [Full config](./client.md) The `client` kind `tls` binding receives inbound application streams and encodes each as an encrypted network stream via TLS protocol. @@ -55,7 +59,9 @@ Certificates and keys required to complete the TLS handshake are provided by a ` Conditional routes based on `tls` hostname authority or negotiated ALPN protocol are used to route these streams to an `exit` binding. -### kind: proxy +## proxy + +> [Full config](./proxy.md) The `proxy` kind `tls` binding detects `ClientHello` `server_name` extension to provide TLS virtual hosting by routing based on server name. @@ -131,15 +137,7 @@ Application protocols. Mutual authentication -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: echo_server -``` + ### routes @@ -211,7 +209,7 @@ routes: exit: echo_server ``` - + --- diff --git a/src/reference/config/bindings/tls/client.md b/src/reference/config/bindings/tls/client.md index a4e38656..0bbba9a9 100644 --- a/src/reference/config/bindings/tls/client.md +++ b/src/reference/config/bindings/tls/client.md @@ -5,3 +5,14 @@ shortTitle: client # tls client The tls client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/tls/proxy.md b/src/reference/config/bindings/tls/proxy.md index 371deaf1..d6b10777 100644 --- a/src/reference/config/bindings/tls/proxy.md +++ b/src/reference/config/bindings/tls/proxy.md @@ -5,3 +5,14 @@ shortTitle: proxy # tls proxy The tls proxy binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/tls/server.md b/src/reference/config/bindings/tls/server.md index 45ae5a55..7bba1b2c 100644 --- a/src/reference/config/bindings/tls/server.md +++ b/src/reference/config/bindings/tls/server.md @@ -5,3 +5,14 @@ shortTitle: server # tls server The tls server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/ws/README.md b/src/reference/config/bindings/ws/README.md index bbd0a90b..8c64f52e 100644 --- a/src/reference/config/bindings/ws/README.md +++ b/src/reference/config/bindings/ws/README.md @@ -31,13 +31,17 @@ ws_server: Defines a binding with WebSockets protocol support, with `server` or `client` behavior. -### kind: server +## server + +> [Full config](./server.md) The `server` kind `ws` binding converts inbound `http` request-response streams into `ws` full-duplex streams. Conditional routes based on `ws` scheme, authority, path or negotiated subprotocol are used to route these streams to an `exit` binding. -### kind: client +## client + +> [Full config](./client.md) The `client` kind `ws` binding converts inbound `ws` full duplex streams into `http` request-response streams. @@ -79,15 +83,7 @@ Authority. Path. -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: echo_server -``` + ### routes @@ -165,7 +161,7 @@ routes: exit: echo_server ``` - + --- diff --git a/src/reference/config/bindings/ws/client.md b/src/reference/config/bindings/ws/client.md index 763c9ddd..38f3fdc6 100644 --- a/src/reference/config/bindings/ws/client.md +++ b/src/reference/config/bindings/ws/client.md @@ -5,3 +5,14 @@ shortTitle: client # ws client The ws client binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/bindings/ws/server.md b/src/reference/config/bindings/ws/server.md index 7c137b81..32aebc6d 100644 --- a/src/reference/config/bindings/ws/server.md +++ b/src/reference/config/bindings/ws/server.md @@ -5,3 +5,14 @@ shortTitle: server # ws server The ws server binding + +```yaml {3} + +``` + +## Configuration (\* required) + + + + + diff --git a/src/reference/config/catalogs/.templates/schema-registry-config.md b/src/reference/config/catalogs/.templates/schema-registry-config.md new file mode 100644 index 00000000..23a00f1f --- /dev/null +++ b/src/reference/config/catalogs/.templates/schema-registry-config.md @@ -0,0 +1,21 @@ +### options + +> `object` + +#### options.url\* + +> `string` + +Schema Registry URL to access schemas via API calls. + +#### options.context + +> `string` | Default: `"default"` + +Schema context represents an independent scope in the Schema Registry. + +#### options.max-age + +> `integer` | Default: `300` + +The maximum duration in seconds to keep a cached schema before fetching the schema again. From f614c3b8d4521e5223bd8bd6e4980f75c2df67db Mon Sep 17 00:00:00 2001 From: AJ Date: Thu, 22 Aug 2024 10:46:44 -0400 Subject: [PATCH 12/54] got the inheritance of attributes working --- .check-schema/index.js | 91 +++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 27 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index 7123b553..60d5f1a8 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -37,7 +37,7 @@ const main = async () => { // console.log(attr, Object.keys(obj || {})); Object.entries(obj).forEach(([k, i]) => { // console.log(k, JSON.stringify(i, null, 4)); - if (!!i.deprecated) return + if (!i || !!i.deprecated) return //recurse if (i.properties) { @@ -119,6 +119,7 @@ const main = async () => { return props; } + var sections = []; var sections = Object.entries({ guard: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], vault: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], @@ -127,13 +128,18 @@ const main = async () => { props?.allOf?.map(({ if: fi, then }) => ({ folder: `${section}s`, name: fi.properties.type.const || fi.properties.type.enum?.[0], - properties: { + props: { ...schema.$defs[section].properties, - options: { ...(schema.$defs.options[section]?.[(fi.properties.type.const || fi.properties.type.enum?.[0])] || {}) }, ...(props?.properties || {}), ...(then.properties || {}), + options: { + ...(schema.$defs.options[section]?.[(fi.properties.type.const || fi.properties.type.enum?.[0])] || {}), + ...(schema.$defs[section].properties?.options || {}), + ...(props?.properties?.options || {}), + ...(then.properties?.options || {}), + }, required: [...(props?.required || []), ...(then.required || [])], - oneOf: [...(props?.oneOf || []), ...(then.oneOf || [])], + anyOf: [...(then.anyOf || [])], }, })) ).flat(1); @@ -145,13 +151,25 @@ const main = async () => { sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf }) => ({ folder, name: properties.kind.const, - properties: { - ...schema.$defs.binding.properties, - options: { ...(schema.$defs.options.binding[properties.kind.const] || {}) }, + props: { + ...bindings.properties, ...(then.properties || {}), ...(properties || {}), + options: { + ...(then.properties?.options || {}), + ...(properties?.options || {}), + }, + routes: { + items: { + properties: { + ...(bindings.properties?.routes?.items?.properties || {}), + ...(then.properties?.routes?.items?.properties || {}), + ...(properties?.routes?.items?.properties || {}), + } + } + }, required: [...(then.required || []), ...(required || [])], - oneOf: [...(then.oneOf || []), ...(oneOf || [])], + oneOf, anyOf: [...(then.anyOf || []), ...(anyOf || [])], }, }))); @@ -159,19 +177,31 @@ const main = async () => { sections.push({ folder, name: then.properties.kind.enum[0], - properties: { - ...(then || {}), + props: { + ...bindings.properties, + ...(then.properties || {}), + routes: { + items: { + properties: { + ...(bindings.properties?.routes?.items?.properties || {}), + ...(then.properties?.routes?.items?.properties || {}), + } + } + }, + required: [...(then.required || [])], } }); } }) + // console.log("sections", JSON.stringify(sections)); + var exporterProps = schema.properties.telemetry.properties.exporters.patternProperties[Object.keys(schema.properties.telemetry.properties.exporters.patternProperties)[0]] sections.push( ...exporterProps?.allOf?.map(({ if: fi, then }) => ({ folder: "telemetry.exporters", name: fi.properties.type.const, - properties: then, + props: then, })) ); // console.log("sections", sections); @@ -180,25 +210,25 @@ const main = async () => { // type: "model", // folder: "models", // name: fi.properties.model.const, - // properties:{ [fi.properties.model.const]: { + // props:{ [fi.properties.model.const]: { // ...(schema.$defs.converter.model || {}), ...(then || {}) , // }}, // })) // ); - sections.forEach(({ folder, name, properties }) => { - delete properties.type; - delete properties.kind; + sections.forEach(({ folder, name, props }) => { + delete props.type; + delete props.kind; var foldername = `src/reference/config/${folder.replaceAll(".", "/")}`; var filename = `${name}.md`; var filePath = `${foldername}/${filename}`; - // console.log(filePath, properties); - var attrs = getObjProps(null, properties, []); + // console.log(filePath, props); + var attrs = getObjProps(null, props, []); if (fs.existsSync(filePath)) { var fullMdContent = fs.readFileSync(filePath, "utf8") - .toString(); - fullMdContent = fullMdContent.replace(//g, (_, p1) => + .toString(); + fullMdContent = fullMdContent.replace(//g, (_, p1) => (fs.readFileSync(path.resolve(foldername, p1), "utf8").toString()) ); // console.log("fullMdContent", fullMdContent) @@ -206,15 +236,22 @@ const main = async () => { var headers = getPageProps(marked.lexer(fullMdContent)).sort(); var sorted = attrs.map((a) => a[0]).sort(); console.log("findings", folder, name, sorted, headers); - var addList = sorted.filter((x) => - !headers.includes(x) - ); - var removeList = headers.filter((x) => - !sorted.includes(x) && - !["routes[].exit", "routes[].guarded"].includes(x) + + // dedupe + sorted = sorted.filter((value, index, array) => + array.indexOf(value) === index ); - if (addList.length) console.log(folder, name, "add", addList); - if (removeList.length) console.log(folder, name, "remove", removeList); + headers = headers.filter((value, index, array) => + array.indexOf(value) === index + ) + + // print diff check + console.log(folder, name, "add", sorted.filter((x) => + !headers.includes(x) + )); + console.log(folder, name, "remove", headers.filter((x) => + !sorted.includes(x) + )); } else { errors.push(`missing ${name}`); } From c7b762e862085985d533a6de679b4eb4f06c15cf Mon Sep 17 00:00:00 2001 From: AJ Date: Thu, 22 Aug 2024 12:35:52 -0400 Subject: [PATCH 13/54] update all ref directories --- .check-schema/index.js | 21 +- .../config/bindings/.partials/vault.md | 5 + src/reference/config/bindings/amqp/README.md | 2 +- src/reference/config/bindings/amqp/server.md | 4 +- .../config/bindings/asyncapi/README.md | 6 +- .../config/bindings/asyncapi/client.md | 6 +- .../config/bindings/asyncapi/proxy.md | 6 +- .../config/bindings/asyncapi/server.md | 6 +- src/reference/config/bindings/echo/README.md | 2 +- src/reference/config/bindings/echo/server.md | 2 +- src/reference/config/bindings/fan/README.md | 2 +- src/reference/config/bindings/fan/server.md | 2 +- .../config/bindings/filesystem/README.md | 2 +- .../config/bindings/filesystem/server.md | 4 +- .../config/bindings/grpc-kafka/README.md | 2 +- .../config/bindings/grpc-kafka/proxy.md | 6 +- src/reference/config/bindings/grpc/client.md | 4 +- src/reference/config/bindings/grpc/server.md | 6 +- .../config/bindings/http-filesystem/README.md | 2 +- .../config/bindings/http-filesystem/proxy.md | 4 +- .../bindings/http-kafka/.partials/options.md | 51 +++ .../bindings/http-kafka/.partials/proxy.yaml | 36 ++ .../bindings/http-kafka/.partials/routes.md | 282 ++++++++++++ .../config/bindings/http-kafka/README.md | 406 +----------------- .../config/bindings/http-kafka/proxy.md | 8 +- src/reference/config/bindings/http/README.md | 4 +- src/reference/config/bindings/http/client.md | 6 +- src/reference/config/bindings/http/server.md | 6 +- .../bindings/kafka-grpc/.partials/options.md | 73 ++++ .../kafka-grpc/.partials/remote_server.yaml | 23 + .../bindings/kafka-grpc/.partials/routes.md | 115 +++++ .../config/bindings/kafka-grpc/README.md | 248 +---------- .../bindings/kafka-grpc/remote_server.md | 8 +- .../bindings/kafka-proxy/.partials/options.md | 64 +++ .../bindings/kafka-proxy/.partials/proxy.yaml | 11 + .../config/bindings/kafka-proxy/README.md | 106 +---- .../config/bindings/kafka-proxy/proxy.md | 21 +- .../kafka/.partials/cache_client.yaml | 4 + .../kafka/.partials/cache_server.yaml | 7 + .../bindings/kafka/.partials/client.yaml | 4 + .../bindings/kafka/.partials/options.md | 82 ++++ .../config/bindings/kafka/.partials/routes.md | 41 ++ src/reference/config/bindings/kafka/README.md | 167 +------ .../config/bindings/kafka/cache_client.md | 6 +- .../config/bindings/kafka/cache_server.md | 6 +- src/reference/config/bindings/kafka/client.md | 6 +- .../bindings/mqtt-kafka/.partials/options.md | 86 ++++ .../bindings/mqtt-kafka/.partials/proxy.yaml | 21 + .../bindings/mqtt-kafka/.partials/routes.md | 105 +++++ .../config/bindings/mqtt-kafka/README.md | 241 +---------- .../config/bindings/mqtt-kafka/proxy.md | 6 +- .../bindings/mqtt/.partials/client.yaml | 4 + .../config/bindings/mqtt/.partials/options.md | 94 ++++ .../config/bindings/mqtt/.partials/routes.md | 82 ++++ .../bindings/mqtt/.partials/server.yaml | 22 + src/reference/config/bindings/mqtt/README.md | 222 +--------- src/reference/config/bindings/mqtt/client.md | 6 +- src/reference/config/bindings/mqtt/server.md | 6 +- .../openapi-asyncapi/.partials/options.md | 64 +++ .../openapi-asyncapi/.partials/proxy.yaml | 23 + .../openapi-asyncapi/.partials/routes.md | 60 +++ .../bindings/openapi-asyncapi/README.md | 167 +------ .../config/bindings/openapi-asyncapi/proxy.md | 6 +- .../bindings/openapi/.partials/client.yaml | 15 + .../bindings/openapi/.partials/options.md | 167 +++++++ .../bindings/openapi/.partials/server.yaml | 13 + .../config/bindings/openapi/README.md | 226 +--------- .../config/bindings/openapi/client.md | 5 +- .../config/bindings/openapi/server.md | 5 +- .../bindings/proxy/.partials/client.yaml | 4 + .../config/bindings/proxy/.partials/routes.md | 96 +++++ .../bindings/proxy/.partials/server.yaml | 10 + src/reference/config/bindings/proxy/README.md | 130 +----- src/reference/config/bindings/proxy/client.md | 5 +- src/reference/config/bindings/proxy/server.md | 5 +- .../bindings/sse-kafka/.partials/proxy.yaml | 11 + .../bindings/sse-kafka/.partials/routes.md | 105 +++++ .../config/bindings/sse-kafka/README.md | 161 +------ .../config/bindings/sse-kafka/proxy.md | 5 +- .../config/bindings/sse/.partials/client.yaml | 4 + .../config/bindings/sse/.partials/options.md | 34 ++ .../config/bindings/sse/.partials/routes.md | 60 +++ .../config/bindings/sse/.partials/server.yaml | 4 + src/reference/config/bindings/sse/README.md | 150 +------ src/reference/config/bindings/sse/client.md | 8 +- src/reference/config/bindings/sse/server.md | 8 +- .../config/bindings/tcp/.partials/client.yaml | 3 + .../config/bindings/tcp/.partials/options.md | 23 + .../config/bindings/tcp/.partials/routes.md | 49 +++ .../config/bindings/tcp/.partials/server.yaml | 7 + src/reference/config/bindings/tcp/README.md | 112 +---- src/reference/config/bindings/tcp/client.md | 6 +- src/reference/config/bindings/tcp/server.md | 6 +- .../config/bindings/tls/.partials/options.md | 65 +++ .../config/bindings/tls/.partials/routes.md | 69 +++ .../config/bindings/tls/.partials/server.yaml | 16 + src/reference/config/bindings/tls/README.md | 182 +------- src/reference/config/bindings/tls/client.md | 7 +- src/reference/config/bindings/tls/proxy.md | 7 +- src/reference/config/bindings/tls/server.md | 7 +- .../config/bindings/ws/.partials/options.md | 37 ++ .../config/bindings/ws/.partials/routes.md | 75 ++++ .../config/bindings/ws/.partials/server.yaml | 8 + src/reference/config/bindings/ws/README.md | 142 +----- src/reference/config/bindings/ws/client.md | 6 +- src/reference/config/bindings/ws/server.md | 6 +- 106 files changed, 2444 insertions(+), 2720 deletions(-) create mode 100644 src/reference/config/bindings/.partials/vault.md create mode 100644 src/reference/config/bindings/http-kafka/.partials/options.md create mode 100644 src/reference/config/bindings/http-kafka/.partials/routes.md create mode 100644 src/reference/config/bindings/kafka-grpc/.partials/options.md create mode 100644 src/reference/config/bindings/kafka-grpc/.partials/routes.md create mode 100644 src/reference/config/bindings/kafka-proxy/.partials/options.md create mode 100644 src/reference/config/bindings/kafka/.partials/options.md create mode 100644 src/reference/config/bindings/kafka/.partials/routes.md create mode 100644 src/reference/config/bindings/mqtt-kafka/.partials/options.md create mode 100644 src/reference/config/bindings/mqtt-kafka/.partials/routes.md create mode 100644 src/reference/config/bindings/mqtt/.partials/options.md create mode 100644 src/reference/config/bindings/mqtt/.partials/routes.md create mode 100644 src/reference/config/bindings/openapi-asyncapi/.partials/options.md create mode 100644 src/reference/config/bindings/openapi-asyncapi/.partials/routes.md create mode 100644 src/reference/config/bindings/openapi/.partials/options.md create mode 100644 src/reference/config/bindings/proxy/.partials/routes.md create mode 100644 src/reference/config/bindings/sse-kafka/.partials/routes.md create mode 100644 src/reference/config/bindings/sse/.partials/options.md create mode 100644 src/reference/config/bindings/sse/.partials/routes.md create mode 100644 src/reference/config/bindings/tcp/.partials/options.md create mode 100644 src/reference/config/bindings/tcp/.partials/routes.md create mode 100644 src/reference/config/bindings/tls/.partials/options.md create mode 100644 src/reference/config/bindings/tls/.partials/routes.md create mode 100644 src/reference/config/bindings/ws/.partials/options.md create mode 100644 src/reference/config/bindings/ws/.partials/routes.md diff --git a/.check-schema/index.js b/.check-schema/index.js index 60d5f1a8..15508be3 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -233,24 +233,21 @@ const main = async () => { ); // console.log("fullMdContent", fullMdContent) - var headers = getPageProps(marked.lexer(fullMdContent)).sort(); - var sorted = attrs.map((a) => a[0]).sort(); - console.log("findings", folder, name, sorted, headers); - - // dedupe - sorted = sorted.filter((value, index, array) => + // get page headers and schema props + var pageHeaders = getPageProps(marked.lexer(fullMdContent)).sort().filter((value, index, array) => array.indexOf(value) === index ); - headers = headers.filter((value, index, array) => + var schemaProps = attrs.map((a) => a[0]).sort().filter((value, index, array) => array.indexOf(value) === index - ) + ); + // console.log("findings", folder, name, schemaProps, pageHeaders); // print diff check - console.log(folder, name, "add", sorted.filter((x) => - !headers.includes(x) + console.log(folder, name, "add", schemaProps.filter((x) => + !pageHeaders.includes(x) )); - console.log(folder, name, "remove", headers.filter((x) => - !sorted.includes(x) + console.log(folder, name, "remove", pageHeaders.filter((x) => + !schemaProps.includes(x) )); } else { errors.push(`missing ${name}`); diff --git a/src/reference/config/bindings/.partials/vault.md b/src/reference/config/bindings/.partials/vault.md new file mode 100644 index 00000000..77bd7573 --- /dev/null +++ b/src/reference/config/bindings/.partials/vault.md @@ -0,0 +1,5 @@ +### vault + +> `string` + +Vault name. diff --git a/src/reference/config/bindings/amqp/README.md b/src/reference/config/bindings/amqp/README.md index a47769b2..cdb89e57 100644 --- a/src/reference/config/bindings/amqp/README.md +++ b/src/reference/config/bindings/amqp/README.md @@ -26,5 +26,5 @@ Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enabl The amqp server binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/amqp/server.md b/src/reference/config/bindings/amqp/server.md index 83a4252f..d640f129 100644 --- a/src/reference/config/bindings/amqp/server.md +++ b/src/reference/config/bindings/amqp/server.md @@ -11,7 +11,7 @@ tag: The amqp server binding decodes the AMQP protocol on the inbound network stream, producing higher level application streams for each send or receive link. Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. ```yaml {3} - + ``` ::: important Feature is in Incubator @@ -20,6 +20,6 @@ Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enabl ## Configuration (\* required) - + diff --git a/src/reference/config/bindings/asyncapi/README.md b/src/reference/config/bindings/asyncapi/README.md index f808f772..522b93ea 100644 --- a/src/reference/config/bindings/asyncapi/README.md +++ b/src/reference/config/bindings/asyncapi/README.md @@ -25,7 +25,7 @@ The `client` kind `asyncapi` binding creates composite of `kafka` or `mqtt` or ` AsyncAPI streams to Kafka/MQTT/HTTP streams. ```yaml {3} - + ``` ## proxy @@ -35,7 +35,7 @@ AsyncAPI streams to Kafka/MQTT/HTTP streams. The `proxy` kind `asyncapi` binding creates composite of `mqtt-kafka` binding with proxy kind mapping MQTT streams to Kafka streams. ```yaml {3} - + ``` ## server @@ -45,5 +45,5 @@ The `proxy` kind `asyncapi` binding creates composite of `mqtt-kafka` binding wi The `server` kind `asyncapi` binding creates composite of `tcp`, `tls`, and `mqtt` or `http` bindings with server kind and adapts MQTT/HTTP streams to AsyncAPI streams. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 249c433e..6eccf925 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -7,12 +7,12 @@ shortTitle: client The asyncapi client binding creates composite of `kafka` or `mqtt` or `http`, and `tls`, `tcp` bindings with client kind and adapts AsyncAPI streams to Kafka/MQTT/HTTP streams. ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index 054b2e3c..b0b9663f 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -7,12 +7,12 @@ shortTitle: proxy The asyncapi proxy binding creates composite of `mqtt-kafka` binding with proxy kind mapping MQTT streams to Kafka streams. ```yaml - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 7630d16a..ed6b6206 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -7,12 +7,12 @@ shortTitle: server The asyncapi server binding creates composite of `tcp`, `tls`, and `mqtt` or `http` bindings with server kind and adapts MQTT/HTTP streams to AsyncAPI streams. ```yaml - + ``` ## Configuration (\* required) - + ### mqtt-kafka @@ -64,6 +64,6 @@ AsyncAPI Kafka messages channel. messages: mqttMessages ``` - + diff --git a/src/reference/config/bindings/echo/README.md b/src/reference/config/bindings/echo/README.md index 475a4fbf..08fac160 100644 --- a/src/reference/config/bindings/echo/README.md +++ b/src/reference/config/bindings/echo/README.md @@ -22,5 +22,5 @@ This binding supports the `echo` protocol and is run with the `server` behavior. Behaves as an `echo` `server`. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/echo/server.md b/src/reference/config/bindings/echo/server.md index a9049b6f..de9ead62 100644 --- a/src/reference/config/bindings/echo/server.md +++ b/src/reference/config/bindings/echo/server.md @@ -7,7 +7,7 @@ shortTitle: server The echo server binding supports the `echo` protocol and is run with the `server` behavior. It reads inbound messages and writes it back to the sender. ```yaml {3} - + ``` ## Configuration (\* required) diff --git a/src/reference/config/bindings/fan/README.md b/src/reference/config/bindings/fan/README.md index 5ce43cff..aed1990a 100644 --- a/src/reference/config/bindings/fan/README.md +++ b/src/reference/config/bindings/fan/README.md @@ -22,5 +22,5 @@ Defines a binding with `fan-in` and `fan-out` support, with `server` behavior. Behave as an `fan-in` and `fan-out` `server`. The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/fan/server.md b/src/reference/config/bindings/fan/server.md index 28c21169..a657b1a9 100644 --- a/src/reference/config/bindings/fan/server.md +++ b/src/reference/config/bindings/fan/server.md @@ -7,7 +7,7 @@ shortTitle: server The fan server binding behaves as an `fan-in` and `fan-out` `server`. The `server` kind `fan` binding performs fan-in of data on all inbound network streams, grouping them into a single application stream. Then data received from the application stream is fanned-out to all network streams in the group. ```yaml {3} - + ``` ## Configuration (\* required) diff --git a/src/reference/config/bindings/filesystem/README.md b/src/reference/config/bindings/filesystem/README.md index a9cd813a..8e5309a7 100644 --- a/src/reference/config/bindings/filesystem/README.md +++ b/src/reference/config/bindings/filesystem/README.md @@ -22,5 +22,5 @@ The `server` kind `filesystem` binding provides access to files and directories Behave as a `filesystem` `server`. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/filesystem/server.md b/src/reference/config/bindings/filesystem/server.md index ffa1daff..ddb58b98 100644 --- a/src/reference/config/bindings/filesystem/server.md +++ b/src/reference/config/bindings/filesystem/server.md @@ -7,10 +7,10 @@ shortTitle: server The filesystem server binding provides access to files and directories on the local filesystem, optionally following symbolic links.It behaves as a web server when combined with `tcp,` `tls`, `http` and `http-filesystem` bindings. ```yaml {3} - + ``` ## Configuration (\* required) - + diff --git a/src/reference/config/bindings/grpc-kafka/README.md b/src/reference/config/bindings/grpc-kafka/README.md index 219135cc..8853362c 100644 --- a/src/reference/config/bindings/grpc-kafka/README.md +++ b/src/reference/config/bindings/grpc-kafka/README.md @@ -22,5 +22,5 @@ Zilla runtime grpc-kafka binding. Behave as an `grpc-kafka` `proxy`. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/grpc-kafka/proxy.md b/src/reference/config/bindings/grpc-kafka/proxy.md index 0d92f84c..41f1811f 100644 --- a/src/reference/config/bindings/grpc-kafka/proxy.md +++ b/src/reference/config/bindings/grpc-kafka/proxy.md @@ -7,12 +7,12 @@ shortTitle: proxy The grpc-kafka proxy binding adapts `grpc` request-response streams to `kafka` topic streams. ```yaml {3} - + ``` ## Configuration (\* required) - + - + diff --git a/src/reference/config/bindings/grpc/client.md b/src/reference/config/bindings/grpc/client.md index 23f646b8..f0fd7d6d 100644 --- a/src/reference/config/bindings/grpc/client.md +++ b/src/reference/config/bindings/grpc/client.md @@ -12,11 +12,11 @@ tag: The grpc client binding adapts `grpc` request-response streams to `http` request-response streams. ```yaml - + ``` ## Configuration (\* required) - + diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index c6d51ca9..46f72c97 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -12,15 +12,15 @@ tag: The grpc server binding adapts `http` request-response streams to `grpc` request-response streams, with support for both `application/grpc+proto` and `application/grpc-web+proto` content types. ```yaml {4-6,9-13} - + ``` ## Configuration (\* required) - + - + --- diff --git a/src/reference/config/bindings/http-filesystem/README.md b/src/reference/config/bindings/http-filesystem/README.md index 0053a88f..499d036e 100644 --- a/src/reference/config/bindings/http-filesystem/README.md +++ b/src/reference/config/bindings/http-filesystem/README.md @@ -24,5 +24,5 @@ The `proxy` kind `http-filesystem` binding adapts `http` data streams into `file Behaves as a web server when combined with `tcp,` `tls`, `http` and `filesystem` bindings. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/http-filesystem/proxy.md b/src/reference/config/bindings/http-filesystem/proxy.md index 22d85edd..511a8955 100644 --- a/src/reference/config/bindings/http-filesystem/proxy.md +++ b/src/reference/config/bindings/http-filesystem/proxy.md @@ -9,11 +9,11 @@ The http-filesystem proxy binding adapts `http` data streams into `filesystem` d Behaves as a web server when combined with `tcp,` `tls`, `http` and `filesystem` bindings. ```yaml {3} - + ``` ## Configuration (\* required) - + diff --git a/src/reference/config/bindings/http-kafka/.partials/options.md b/src/reference/config/bindings/http-kafka/.partials/options.md new file mode 100644 index 00000000..c50e1084 --- /dev/null +++ b/src/reference/config/bindings/http-kafka/.partials/options.md @@ -0,0 +1,51 @@ +### options + +> `object` + +`http-kafka`-specific options for adapting `http` request-response streams to `kafka` topic streams. + +```yaml +options: + idempotency: + header: idempotency-key + correlation: + headers: + reply-to: zilla:reply-to + correlation-id: zilla:correlation-id +``` + +#### options.idempotency + +> `object` + +HTTP request header used to specify the idempotency key when adapting `http` request-response streams to `kafka` topic streams. + +##### idempotency.header + +> `string` | Default: `"idempotency-key"` + +HTTP request header name for idempotency key. + +#### options.correlation + +> `object` + +Kafka request message headers injected when adapting `http` request-response streams to `kafka` topic streams. + +##### correlation.headers + +> `map` of `name: value` properties + +Kafka request message reply to and correlation id header names injected when adapting `http` request-response streams to `kafka` topic streams. + +##### headers.reply-to + +> `string` | Default: `"zilla:reply-to"` + +Kafka header name for reply-to topic. + +##### headers.correlation-id + +> `string` | Default: `"zilla:correlation-id"` + +Kafka header name for request-response correlation identifier. diff --git a/src/reference/config/bindings/http-kafka/.partials/proxy.yaml b/src/reference/config/bindings/http-kafka/.partials/proxy.yaml index e69de29b..43f6b104 100644 --- a/src/reference/config/bindings/http-kafka/.partials/proxy.yaml +++ b/src/reference/config/bindings/http-kafka/.partials/proxy.yaml @@ -0,0 +1,36 @@ + http_kafka_proxy: + type: http-kafka + kind: proxy + routes: + - when: + - method: GET + path: /items + exit: kafka_cache_client + with: + capability: fetch + topic: items-snapshots + merge: + content-type: application/json + - when: + - method: GET + path: /items/{id} + exit: kafka_cache_client + with: + capability: fetch + topic: items-snapshots + filters: + - key: ${params.id} + - when: + - method: PUT + path: /items/{id} + - method: GET + path: /items/{id};cid={correlationId} + exit: kafka_cache_client + with: + capability: produce + topic: items-requests + acks: leader_only + key: ${params.id} + reply-to: items-responses + async: + location: /items/${params.id};cid=${correlationId} diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md new file mode 100644 index 00000000..79f57699 --- /dev/null +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -0,0 +1,282 @@ +### routes + +> `array` of `object` + +Conditional `http-kafka`-specific routes for adapting `http` request-response streams to `kafka` topic streams. + +Correlated Request-Response route: + +```yaml +routes: + - when: + - method: PUT + path: /items/{id} + - method: GET + path: /items/{id};cid={correlationId} + exit: kafka_cache_client + with: + capability: produce + topic: items-requests + acks: leader_only + key: ${params.id} + reply-to: items-responses + async: + location: /items/${params.id};cid=${correlationId} +``` + +Single topic CRUD routes: + +```yaml +routes: + - when: + - method: POST + path: /items + exit: kafka_cache_client + with: + capability: produce + topic: items-crud + key: ${idempotencyKey} + - when: + - method: GET + path: /items + exit: kafka_cache_client + with: + capability: fetch + topic: items-snapshots + merge: + content-type: application/json + - when: + - method: GET + path: /items/{id} + exit: kafka_cache_client + with: + capability: fetch + topic: items-snapshots + filters: + - key: ${params.id} + - when: + - path: /items/{id} + exit: kafka_cache_client + with: + capability: produce + topic: items-crud + key: ${params.id} +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +Roles required by named guard. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route when adapting `http` request-response streams to `kafka` topic streams. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - method: GET + path: /items/{id};cid={correlationId} +``` + +##### when[].method + +> `string` + +HTTP Method, such as `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `CONNECT`, `OPTIONS`, `TRACE`, `PATCH`. + +##### when[].path + +> `string` + +Path with optional embedded parameter names, such as `/{topic}`. + +#### routes[].exit\* + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +routes: + - when: + ... + exit: kafka_cache_client +``` + +#### routes[].with + +> **oneOf**: [Fetch](#with-capability-fetch) | [Produce](#with-capability-produce) + +Defines the route with the Fetch capability. + +```yaml +with: + capability: fetch +``` + +Defines the route with the Produce capability. + +```yaml +with: + capability: produce +``` + +#### with.capability: fetch + +> `object` + +Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic fetch streams. + +Routes with `fetch` capability map `http` `GET` requests to a `kafka` log-compacted topic, supporting filtered retrieval of messages with a specific key, or unfiltered retrieval of all messages with distinct keys in the topic merged into a unified response. + +Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers, extracting the parameter values from the inbound `http` request path. + +Status `200` `http` responses include an `etag` header that can be used with `if-none-match` for subsequent conditional `GET` requests to check for updates. Rather than polling, `http` requests can also include the `prefer: wait=N` header to wait a maximum of `N` seconds before responding with `304` if not modified. When a new message arrives in the topic that would modify the response, then all `prefer: wait=N` clients receive the response immediately. + +```yaml +with: + capability: fetch + topic: items-snapshots + filters: + - key: ${params.id} + merge: + content-type: application/json + patch: + initial: "[]" + path: /- +``` + +##### with.topic + +> `string` + +Topic name, optionally referencing path parameter such as `${params.topic}`. + +##### with.filters + +> `array` of `object` + +List of criteria (any match) to this filter. Kafka filters for matched route when adapting `http` request-response streams to `kafka` topic fetch streams. All specified headers and key must match for the combined criteria to match. + +##### filters[].key + +> `string` + +Message key, optionally referencing path parameter such as `${params.key}`. + +##### filters[].headers + +> `map` of `name: value` properties + +Message headers, with value optionally referencing path parameter such as `${params.headerX}`. + +##### with.merge + +> `object` + +Merge multiple Kafka messages into a unified HTTP response. Kafka merge configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. + +##### merge.content-type: application/json + +> `const` + +Content type of merged HTTP response. + +##### merge.patch + +> `object` + +Describes how to patch initial HTTP response to include one or more Kafka messages in unified HTTP response. + +- patch (application/json) + + Kafka merge patch configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. + +##### patch.initial: [] + +> `const` + +Initial JSON value. + +##### patch.path: /- + +> `const` + +JSON Patch path to include each Kafka message in unified HTTP response. + +#### with.capability: produce + +> `object` + +Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic produce streams. + +Routes with `produce` capability map any `http` request-response to a correlated pair of `kafka` messages. The `http` request message is sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message received and processed by the `kafka` `requests` topic consumer, it produces a response message to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. + +Requests including an `idempotency-key` `http` header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. + +Specifying `async` allows clients to include a `prefer: respond-async` header in the `http` request to receive `202 Accepted` response with `location` response header. + +A corresponding `routes[].when` object with matching `GET` method and `location` path is also required for follow up `GET` requests to return the same response as would have been returned if `prefer: respond-async` request header had been omitted. + +```yaml +with: + capability: produce + topic: items-requests + acks: leader_only + key: ${params.id} + reply-to: items-responses + overrides: + custom-text: custom-value + async: + location: /items/${params.id};cid=${correlationId} +``` + +##### with.topic + +> `string` + +Kafka topic name, optionally referencing path parameter such as `${params.topic}`. + +##### with.acks + +> `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` + +Kafka acknowledgement mode + +##### with.key + +> `string` + +Kafka message key, optionally referencing path parameter such as `${params.id}`. + +##### with.overrides + +> `map` of `name: value` properties + +Kafka message headers, with values optionally referencing path parameter. + +##### with.reply-to + +> `string` + +Kafka reply-to topic name. + +##### with.async + +> `map` of `name: value` properties + +Allows an HTTP response to be retrieved asynchronously. + +A `location: ` property can be used to define the path where an async result can be fetched, with the `` value optionally referencing route path parameters or the `${correlationId}`. diff --git a/src/reference/config/bindings/http-kafka/README.md b/src/reference/config/bindings/http-kafka/README.md index 6772660a..461a9279 100644 --- a/src/reference/config/bindings/http-kafka/README.md +++ b/src/reference/config/bindings/http-kafka/README.md @@ -10,55 +10,9 @@ category: tag: - Proxy --- - # http-kafka Binding -Zilla runtime http-kafka binding. - -```yaml {2} -http_kafka_proxy: - type: http-kafka - kind: proxy - routes: - - when: - - method: GET - path: /items - exit: kafka_cache_client - with: - capability: fetch - topic: items-snapshots - merge: - content-type: application/json - - when: - - method: GET - path: /items/{id} - exit: kafka_cache_client - with: - capability: fetch - topic: items-snapshots - filters: - - key: ${params.id} - - when: - - method: PUT - path: /items/{id} - - method: GET - path: /items/{id};cid={correlationId} - exit: kafka_cache_client - with: - capability: produce - topic: items-requests - acks: leader_only - key: ${params.id} - reply-to: items-responses - async: - location: /items/${params.id};cid=${correlationId} -``` - -## Configuration (\* required) - -### type: http-kafka\* - The `proxy` kind `http-kafka` binding adapts `http` request-response streams to `kafka` topic streams. ## proxy @@ -67,362 +21,6 @@ The `proxy` kind `http-kafka` binding adapts `http` request-response streams to Behave as an `http-kafka` `proxy`. -### options - -> `object` - -`http-kafka`-specific options for adapting `http` request-response streams to `kafka` topic streams. - -```yaml -options: - idempotency: - header: idempotency-key - correlation: - headers: - reply-to: zilla:reply-to - correlation-id: zilla:correlation-id -``` - -#### options.idempotency - -> `object` - -HTTP request header used to specify the idempotency key when adapting `http` request-response streams to `kafka` topic streams. - -##### idempotency.header - -> `string` | Default: `"idempotency-key"` - -HTTP request header name for idempotency key. - -#### options.correlation - -> `object` - -Kafka request message headers injected when adapting `http` request-response streams to `kafka` topic streams. - -##### correlation.headers - -> `map` of `name: value` properties - -Kafka request message reply to and correlation id header names injected when adapting `http` request-response streams to `kafka` topic streams. - -##### headers.reply-to - -> `string` | Default: `"zilla:reply-to"` - -Kafka header name for reply-to topic. - -##### headers.correlation-id - -> `string` | Default: `"zilla:correlation-id"` - -Kafka header name for request-response correlation identifier. - -### routes - -> `array` of `object` - -Conditional `http-kafka`-specific routes for adapting `http` request-response streams to `kafka` topic streams. - -Correlated Request-Response route: - -```yaml -routes: - - when: - - method: PUT - path: /items/{id} - - method: GET - path: /items/{id};cid={correlationId} - exit: kafka_cache_client - with: - capability: produce - topic: items-requests - acks: leader_only - key: ${params.id} - reply-to: items-responses - async: - location: /items/${params.id};cid=${correlationId} -``` - -Single topic CRUD routes: - -```yaml -routes: - - when: - - method: POST - path: /items - exit: kafka_cache_client - with: - capability: produce - topic: items-crud - key: ${idempotencyKey} - - when: - - method: GET - path: /items - exit: kafka_cache_client - with: - capability: fetch - topic: items-snapshots - merge: - content-type: application/json - - when: - - method: GET - path: /items/{id} - exit: kafka_cache_client - with: - capability: fetch - topic: items-snapshots - filters: - - key: ${params.id} - - when: - - path: /items/{id} - exit: kafka_cache_client - with: - capability: produce - topic: items-crud - key: ${params.id} -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -Roles required by named guard. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route when adapting `http` request-response streams to `kafka` topic streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - method: GET - path: /items/{id};cid={correlationId} -``` - -##### when[].method - -> `string` - -HTTP Method, such as `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `CONNECT`, `OPTIONS`, `TRACE`, `PATCH`. - -##### when[].path - -> `string` - -Path with optional embedded parameter names, such as `/{topic}`. - -#### routes[].exit\* - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -routes: - - when: - ... - exit: kafka_cache_client -``` - -#### routes[].with - -> **oneOf**: [Fetch](#with-capability-fetch) | [Produce](#with-capability-produce) - -Defines the route with the Fetch capability. - -```yaml -with: - capability: fetch -``` - -Defines the route with the Produce capability. - -```yaml -with: - capability: produce -``` - -#### with.capability: fetch - -> `object` - -Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic fetch streams. - -Routes with `fetch` capability map `http` `GET` requests to a `kafka` log-compacted topic, supporting filtered retrieval of messages with a specific key, or unfiltered retrieval of all messages with distinct keys in the topic merged into a unified response. - -Filtering can be performed by `kafka` message key, message headers, or a combination of both message key and headers, extracting the parameter values from the inbound `http` request path. - -Status `200` `http` responses include an `etag` header that can be used with `if-none-match` for subsequent conditional `GET` requests to check for updates. Rather than polling, `http` requests can also include the `prefer: wait=N` header to wait a maximum of `N` seconds before responding with `304` if not modified. When a new message arrives in the topic that would modify the response, then all `prefer: wait=N` clients receive the response immediately. - -```yaml -with: - capability: fetch - topic: items-snapshots - filters: - - key: ${params.id} - merge: - content-type: application/json - patch: - initial: "[]" - path: /- -``` - -##### with.topic - -> `string` - -Topic name, optionally referencing path parameter such as `${params.topic}`. - -##### with.filters - -> `array` of `object` - -List of criteria (any match) to this filter. Kafka filters for matched route when adapting `http` request-response streams to `kafka` topic fetch streams. All specified headers and key must match for the combined criteria to match. - -##### filters[].key - -> `string` - -Message key, optionally referencing path parameter such as `${params.key}`. - -##### filters[].headers - -> `map` of `name: value` properties - -Message headers, with value optionally referencing path parameter such as `${params.headerX}`. - -##### with.merge - -> `object` - -Merge multiple Kafka messages into a unified HTTP response. Kafka merge configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. - -##### merge.content-type: application/json - -> `const` - -Content type of merged HTTP response. - -##### merge.patch - -> `object` - -Describes how to patch initial HTTP response to include one or more Kafka messages in unified HTTP response. - -- patch (application/json) - - Kafka merge patch configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. - -##### patch.initial: [] - -> `const` - -Initial JSON value. - -##### patch.path: /- - -> `const` - -JSON Patch path to include each Kafka message in unified HTTP response. - -#### with.capability: produce - -> `object` - -Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic produce streams. - -Routes with `produce` capability map any `http` request-response to a correlated pair of `kafka` messages. The `http` request message is sent to a `requests` topic, with a `zilla:correlation-id` header. When the request message received and processed by the `kafka` `requests` topic consumer, it produces a response message to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. - -Requests including an `idempotency-key` `http` header can be replayed and safely receive the same response. This requires the `kafka` consumer to detect and ignore the duplicate request with the same `idempotency-key` and `zilla:correlation-id`. - -Specifying `async` allows clients to include a `prefer: respond-async` header in the `http` request to receive `202 Accepted` response with `location` response header. - -A corresponding `routes[].when` object with matching `GET` method and `location` path is also required for follow up `GET` requests to return the same response as would have been returned if `prefer: respond-async` request header had been omitted. - -```yaml -with: - capability: produce - topic: items-requests - acks: leader_only - key: ${params.id} - reply-to: items-responses - overrides: - custom-text: custom-value - async: - location: /items/${params.id};cid=${correlationId} +```yaml {3} + ``` - -##### with.topic - -> `string` - -Kafka topic name, optionally referencing path parameter such as `${params.topic}`. - -##### with.acks - -> `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` - -Kafka acknowledgement mode - -##### with.key - -> `string` - -Kafka message key, optionally referencing path parameter such as `${params.id}`. - -##### with.overrides - -> `map` of `name: value` properties - -Kafka message headers, with values optionally referencing path parameter. - -##### with.reply-to - -> `string` - -Kafka reply-to topic name. - -##### with.async - -> `map` of `name: value` properties - -Allows an HTTP response to be retrieved asynchronously. - -A `location: ` property can be used to define the path where an async result can be fetched, with the `` value optionally referencing route path parameters or the `${correlationId}`. - -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "http" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - http.* -``` - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/http-kafka/proxy.md b/src/reference/config/bindings/http-kafka/proxy.md index 2d173ba0..273cd736 100644 --- a/src/reference/config/bindings/http-kafka/proxy.md +++ b/src/reference/config/bindings/http-kafka/proxy.md @@ -7,12 +7,12 @@ shortTitle: proxy The http-kafka proxy binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + - + diff --git a/src/reference/config/bindings/http/README.md b/src/reference/config/bindings/http/README.md index 55f0ef6e..25bc2f16 100644 --- a/src/reference/config/bindings/http/README.md +++ b/src/reference/config/bindings/http/README.md @@ -28,7 +28,7 @@ Authorization is enforced by a [`guard`](../../config/overview.md#guards) and th Conditional routes based on `http` request headers are used to route these application streams to an `exit` binding. ```yaml {3} - + ``` ## client @@ -40,5 +40,5 @@ The `client` kind `http` binding receives inbound application streams and encode Conditional routes based on `http` request headers are used to route these network streams to an `exit` binding. ```yaml {3} - + ``` diff --git a/src/reference/config/bindings/http/client.md b/src/reference/config/bindings/http/client.md index 100a9e62..9dc9cc5e 100644 --- a/src/reference/config/bindings/http/client.md +++ b/src/reference/config/bindings/http/client.md @@ -9,12 +9,12 @@ The http client binding receives inbound application streams and encodes each re Conditional routes based on `http` request headers are used to route these network streams to an `exit` binding. ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 19d58ac0..b73511f5 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -13,12 +13,12 @@ Authorization is enforced by a [`guard`](../../config/overview.md#guards) and th Conditional routes based on `http` request headers are used to route these application streams to an `exit` binding. ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/kafka-grpc/.partials/options.md b/src/reference/config/bindings/kafka-grpc/.partials/options.md new file mode 100644 index 00000000..1c7aa4b2 --- /dev/null +++ b/src/reference/config/bindings/kafka-grpc/.partials/options.md @@ -0,0 +1,73 @@ + +### options + +> `object` + +`kafka-grpc`-specific options for adapting `kafka` topic streams to `grpc` request-response streams. + +```yaml +options: + acks: leader_only + idempotency: + metadata: idempotency-key + correlation: + headers: + service: zilla:service + method: zilla:method + correlation-id: zilla:correlation-id + reply-to: zilla:reply-to +``` + +#### options.acks + +> `enum` [ "none", "leader_only", "in_sync_replicas" ] + +The `kafka` acknowledgment mode. + +#### options.idempotency + +> `object` + +Metadata header used to specify the idempotency key when adapting `kafka` topic streams to `grpc` request-response streams. + +##### idempotency.metadata + +> `string` | Default: `"idempotency-key"`. + +The `grpc` metadata header name for idempotency key. + +#### options.correlation + +> `object` + +Kafka request message headers injected when adapting `kafka` topic streams to `grpc` request-response streams. + +##### correlation.headers + +> `object` + +Kafka request message correlation header names used when adapting `kafka` topic streams to `grpc` request-response streams. + +##### headers.service + +> `string` | Default: `"zilla:service"` + +Kafka header name for `grpc` service. + +##### headers.method + +> `string` | Default: `"zilla:method"` + +Kafka header name for `grpc` method. + +##### headers.correlation-id + +> `string` | Default: `"zilla:correlation-id"` + +Kafka header name for request-response correlation identifier. + +##### headers.reply-to + +> `string` | Default: `"zilla:reply-to"` + +Kafka header name for reply-to topic. diff --git a/src/reference/config/bindings/kafka-grpc/.partials/remote_server.yaml b/src/reference/config/bindings/kafka-grpc/.partials/remote_server.yaml index e69de29b..92381bdb 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/remote_server.yaml +++ b/src/reference/config/bindings/kafka-grpc/.partials/remote_server.yaml @@ -0,0 +1,23 @@ + kafka_grpc_proxy: + type: kafka-grpc + kind: remote_server + entry: kafka_cache_client + options: + acks: leader_only + idempotency: + metadata: idempotency-key + correlation: + headers: + service: zilla:service + method: zilla:method + correlation-id: zilla:correlation-id + reply-to: zilla:reply-to + routes: + - when: + - topic: requests + reply-to: responses + method: example.EchoService/* + exit: grpc + with: + scheme: http + authority: localhost:7151 diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md new file mode 100644 index 00000000..ece75f99 --- /dev/null +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -0,0 +1,115 @@ +### routes + +> `array` of `object` + +Conditional `kafka-grpc`-specific routes for adapting `kafka` topic streams to `grpc` request-response streams. + +```yaml +routes: + - guarded: + my_guard: + - echo:messages + when: + - topic: requests + reply-to: responses + method: example.EchoService/* + exit: grpc + with: + scheme: http + authority: localhost:7151 +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +Roles required by named guard. + +```yaml +routes: + - guarded: + my_guard: + - echo:messages +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route when adapting `kafka` topic streams to `grpc` request-response streams. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - topic: requests + reply-to: responses + method: example.EchoService/* +``` + +##### when[].topic + +> `string` + +The name of a Kafka topic for requests. + +##### when[].key + +> `string` + +The name of a Kafka topic for requests. + +##### when[].headers + +> `map` of `name: value` properties + +Header name value pairs (all match). + +##### when[].reply-to + +> `string` + +The name of the Kafka topic for correlated responses. + +##### when[].method + +> `string` + +Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. + +#### routes[].exit\* + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +routes: + - when: + ... + exit: kafka_cache_client +``` + +#### routes[].with + +> `object` + +Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. + +```yaml +with: + scheme: http + authority: localhost:7151 +``` + +##### with.scheme + +> `string` + +The `grpc` request scheme. + +##### with.authority + +> `string` + +The `grpc` request authority. diff --git a/src/reference/config/bindings/kafka-grpc/README.md b/src/reference/config/bindings/kafka-grpc/README.md index 5fa738a4..e2a90890 100644 --- a/src/reference/config/bindings/kafka-grpc/README.md +++ b/src/reference/config/bindings/kafka-grpc/README.md @@ -13,40 +13,6 @@ tag: # kafka-grpc Binding -Zilla runtime kafka-grpc binding. - -```yaml {2} -kafka_grpc_proxy: - type: kafka-grpc - kind: remote_server - entry: kafka_cache_client - options: - acks: leader_only - idempotency: - metadata: idempotency-key - correlation: - headers: - service: zilla:service - method: zilla:method - correlation-id: zilla:correlation-id - reply-to: zilla:reply-to - routes: - - when: - - topic: requests - reply-to: responses - method: example.EchoService/* - exit: grpc - with: - scheme: http - authority: localhost:7151 -``` - -## Configuration (\* required) - -:::: - -### type: kafka-grpc\* - The `grpc` request message is received from a `requests` topic, with a `zilla:correlation-id` header, initiating a `grpc` service method invocation. When the `grpc` response received, a response message is produced to the `responses` topic, with the same `zilla:correlation-id` header to correlate the response. Note that `grpc` requests and responses can be `unary` or `streaming`. @@ -57,216 +23,6 @@ Note that `grpc` requests and responses can be `unary` or `streaming`. The `remote_server` kind `kafka-grpc` binding adapts `kafka` topic streams to `grpc` request-response streams. -### options - -> `object` - -`kafka-grpc`-specific options for adapting `kafka` topic streams to `grpc` request-response streams. - -```yaml -options: - acks: leader_only - idempotency: - metadata: idempotency-key - correlation: - headers: - service: zilla:service - method: zilla:method - correlation-id: zilla:correlation-id - reply-to: zilla:reply-to +```yaml {3} + ``` - -#### options.acks - -> `enum` [ "none", "leader_only", "in_sync_replicas" ] - -The `kafka` acknowledgment mode. - -#### options.idempotency - -> `object` - -Metadata header used to specify the idempotency key when adapting `kafka` topic streams to `grpc` request-response streams. - -##### idempotency.metadata - -> `string` | Default: `"idempotency-key"`. - -The `grpc` metadata header name for idempotency key. - -#### options.correlation - -> `object` - -Kafka request message headers injected when adapting `kafka` topic streams to `grpc` request-response streams. - -##### correlation.headers - -> `object` - -Kafka request message correlation header names used when adapting `kafka` topic streams to `grpc` request-response streams. - -##### headers.service - -> `string` | Default: `"zilla:service"` - -Kafka header name for `grpc` service. - -##### headers.method - -> `string` | Default: `"zilla:method"` - -Kafka header name for `grpc` method. - -##### headers.correlation-id - -> `string` | Default: `"zilla:correlation-id"` - -Kafka header name for request-response correlation identifier. - -##### headers.reply-to - -> `string` | Default: `"zilla:reply-to"` - -Kafka header name for reply-to topic. - -### routes - -> `array` of `object` - -Conditional `kafka-grpc`-specific routes for adapting `kafka` topic streams to `grpc` request-response streams. - -```yaml -routes: - - guarded: - my_guard: - - echo:messages - when: - - topic: requests - reply-to: responses - method: example.EchoService/* - exit: grpc - with: - scheme: http - authority: localhost:7151 -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -Roles required by named guard. - -```yaml -routes: - - guarded: - my_guard: - - echo:messages -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route when adapting `kafka` topic streams to `grpc` request-response streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - topic: requests - reply-to: responses - method: example.EchoService/* -``` - -##### when[].topic - -> `string` - -The name of a Kafka topic for requests. - -##### when[].key - -> `string` - -The name of a Kafka topic for requests. - -##### when[].headers - -> `map` of `name: value` properties - -Header name value pairs (all match). - -##### when[].reply-to - -> `string` - -The name of the Kafka topic for correlated responses. - -##### when[].method - -> `string` - -Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. - -#### routes[].exit\* - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -routes: - - when: - ... - exit: kafka_cache_client -``` - -#### routes[].with - -> `object` - -Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. - -```yaml -with: - scheme: http - authority: localhost:7151 -``` - -##### with.scheme - -> `string` - -The `grpc` request scheme. - -##### with.authority - -> `string` - -The `grpc` request authority. - -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "grpc" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - grpc.* -``` - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/kafka-grpc/remote_server.md b/src/reference/config/bindings/kafka-grpc/remote_server.md index 42440570..81fac36e 100644 --- a/src/reference/config/bindings/kafka-grpc/remote_server.md +++ b/src/reference/config/bindings/kafka-grpc/remote_server.md @@ -7,12 +7,12 @@ shortTitle: remote_server The kafka-grpc remote_server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + - + diff --git a/src/reference/config/bindings/kafka-proxy/.partials/options.md b/src/reference/config/bindings/kafka-proxy/.partials/options.md new file mode 100644 index 00000000..5dbefe73 --- /dev/null +++ b/src/reference/config/bindings/kafka-proxy/.partials/options.md @@ -0,0 +1,64 @@ + +### options\* + +> `object` + +`kafka-proxy`-specific options. + +```yaml +options: + external: + host: kafka-#.external.net + port: 9093 + internal: + host: b-#.kafka.internal.net + port: 9094 +``` + +#### options.external\* + +> `object` + +Kafka proxy endpoint used by external clients. + +```yaml +external: + host: kafka-#.external.net + port: 9093 +``` + +#### external.host\* + +> `string` + +Hostname pattern for external Kafka broker names, where `#` is an integer. + +#### external.port\* + +> `integer` + +Port number for external Kafka broker. + +#### options.internal\* + +> `object` + +Internal Kafka broker endpoint. + +```yaml +internal: + host: b-#.kafka.internal.net + port: 9094 +``` + +#### internal.host\* + +> `string` + +Hostname pattern for internal Kafka broker names, where `#` is an integer. + +#### internal.port\* + +> `integer` + +Port number for internal Kafka broker. diff --git a/src/reference/config/bindings/kafka-proxy/.partials/proxy.yaml b/src/reference/config/bindings/kafka-proxy/.partials/proxy.yaml index e69de29b..492ad329 100644 --- a/src/reference/config/bindings/kafka-proxy/.partials/proxy.yaml +++ b/src/reference/config/bindings/kafka-proxy/.partials/proxy.yaml @@ -0,0 +1,11 @@ + kafka_proxy: + type: kafka-proxy + kind: proxy + options: + external: + host: kafka-#.external.net + port: 9093 + internal: + host: b-#.kafka.internal.net + port: 9094 + exit: tls_client diff --git a/src/reference/config/bindings/kafka-proxy/README.md b/src/reference/config/bindings/kafka-proxy/README.md index 6b40b348..f1ad76be 100644 --- a/src/reference/config/bindings/kafka-proxy/README.md +++ b/src/reference/config/bindings/kafka-proxy/README.md @@ -14,115 +14,17 @@ tag: # kafka-proxy Binding +Defines a binding with `kafka-proxy` support, with `proxy` behavior. + [Available in ](https://www.aklivity.io/products/zilla-plus) {.zilla-plus-badge .hint-container .info} -Zilla runtime kafka-proxy binding. - -```yaml {2} -kafka_proxy: - type: kafka-proxy - kind: proxy - options: - external: - host: kafka-#.external.net - port: 9093 - internal: - host: b-#.kafka.internal.net - port: 9094 - exit: tls_client -``` - -## Configuration (\* required) - -### type: kafka-proxy\* - -Defines a binding with `kafka-proxy` support, with `proxy` behavior. - ## proxy > [Full config](./proxy.md) Behave as a `proxy`. -### options\* - -> `object` - -`kafka-proxy`-specific options. - -```yaml -options: - external: - host: kafka-#.external.net - port: 9093 - internal: - host: b-#.kafka.internal.net - port: 9094 -``` - -#### options.external\* - -> `object` - -Kafka proxy endpoint used by external clients. - -```yaml -external: - host: kafka-#.external.net - port: 9093 +```yaml {3} + ``` - -#### external.host\* - -> `string` - -Hostname pattern for external Kafka broker names, where `#` is an integer. - -#### external.port\* - -> `integer` - -Port number for external Kafka broker. - -#### options.internal\* - -> `object` - -Internal Kafka broker endpoint. - -```yaml -internal: - host: b-#.kafka.internal.net - port: 9094 -``` - -#### internal.host\* - -> `string` - -Hostname pattern for internal Kafka broker names, where `#` is an integer. - -#### internal.port\* - -> `integer` - -Port number for internal Kafka broker. - -### exit\* - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: tls_client -``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/kafka-proxy/proxy.md b/src/reference/config/bindings/kafka-proxy/proxy.md index 71e768f0..7e5f3698 100644 --- a/src/reference/config/bindings/kafka-proxy/proxy.md +++ b/src/reference/config/bindings/kafka-proxy/proxy.md @@ -1,18 +1,31 @@ --- shortTitle: proxy +icon: aky-zilla-plus --- # kafka-proxy proxy The kafka-proxy proxy binding +[Available in ](https://www.aklivity.io/products/zilla-plus) +{.zilla-plus-badge .hint-container .info} + ```yaml {3} - + ``` ## Configuration (\* required) - - - + + +### exit\* + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +exit: tls_client +``` + diff --git a/src/reference/config/bindings/kafka/.partials/cache_client.yaml b/src/reference/config/bindings/kafka/.partials/cache_client.yaml index e69de29b..c3d87471 100644 --- a/src/reference/config/bindings/kafka/.partials/cache_client.yaml +++ b/src/reference/config/bindings/kafka/.partials/cache_client.yaml @@ -0,0 +1,4 @@ + kafka_cache_client: + type: kafka + kind: cache_client + exit: kafka_cache_server diff --git a/src/reference/config/bindings/kafka/.partials/cache_server.yaml b/src/reference/config/bindings/kafka/.partials/cache_server.yaml index e69de29b..c2e4578b 100644 --- a/src/reference/config/bindings/kafka/.partials/cache_server.yaml +++ b/src/reference/config/bindings/kafka/.partials/cache_server.yaml @@ -0,0 +1,7 @@ + kafka_cache_server: + type: kafka + kind: cache_server + options: + bootstrap: + - items-responses + exit: kafka_client diff --git a/src/reference/config/bindings/kafka/.partials/client.yaml b/src/reference/config/bindings/kafka/.partials/client.yaml index e69de29b..a25d33f9 100644 --- a/src/reference/config/bindings/kafka/.partials/client.yaml +++ b/src/reference/config/bindings/kafka/.partials/client.yaml @@ -0,0 +1,4 @@ + kafka_client: + type: kafka + kind: client + exit: tcp_client diff --git a/src/reference/config/bindings/kafka/.partials/options.md b/src/reference/config/bindings/kafka/.partials/options.md new file mode 100644 index 00000000..c5d2e6fe --- /dev/null +++ b/src/reference/config/bindings/kafka/.partials/options.md @@ -0,0 +1,82 @@ +### options + +> `object` + +`kafka`-specific options. + +```yaml +options: + bootstrap: + - items-requests + - items-responses + topics: + - name: items-requests + defaultOffset: live +``` + +#### options.bootstrap + +> `array` of `string` + +Topics to bootstrap in cache server even when no clients. + +#### options.topics + +> `array` of `object` + +Topic configuration. + +#### topics[].name\* + +> `string` + +Topic name. + +#### topics[].defaultOffset + +> `enum` [ "live", "historical" ] | Default: `"historical"` + +Fetch offset to use for new consumers + +#### topics[].key + +> `object` of a named [`model`](../models/) + +Enforce validation for key + +#### topics[].value + +> `object` of a named [`model`](../models/) + +Enforce validation for value + +#### options.servers + +> `array` of `string` + +Bootstrap servers to use when connecting to `kafka` cluster. + +#### options.sasl + +> `object` + +SASL credentials to use when connecting to `kafka` brokers. + +#### sasl.mechanism\* + +> `enum` [ "plain", "scram-sha-1", "scram-sha-256", "scram-sha-512" ] + +SASL mechanism\ +Supports `plain` and `scram` mechanisms. + +#### sasl.username + +> `string` + +SASL username. + +#### sasl.password + +> `string` + +SASL password. diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md new file mode 100644 index 00000000..a0f258df --- /dev/null +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -0,0 +1,41 @@ +### routes + +> `array` of `object` + +Conditional `kafka`-specific routes. + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +##### when[].topic\* + +> `string` + +Topic name pattern. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +exit: echo_server +``` diff --git a/src/reference/config/bindings/kafka/README.md b/src/reference/config/bindings/kafka/README.md index 5ce7ed90..8786fe97 100644 --- a/src/reference/config/bindings/kafka/README.md +++ b/src/reference/config/bindings/kafka/README.md @@ -13,36 +13,16 @@ tag: # kafka Binding -Zilla runtime kafka binding. - -```yaml {2,10,17} -kafka_cache_client: - type: kafka - kind: cache_client - exit: kafka_cache_server -kafka_cache_server: - type: kafka - kind: cache_server - options: - bootstrap: - - items-responses - exit: kafka_client -kafka_client: - type: kafka - kind: client - exit: tcp_client -``` - -## Configuration (\* required) - -### type: kafka\* - Defines a binding with `kafka` protocol support, with `cache_client`, `cache_server` or `client` behavior. ## cache_client > [Full config](./cache_client.md) +```yaml {3} + +``` + ## cache_server > [Full config](./cache_server.md) @@ -61,6 +41,10 @@ When the `kafka` `topic` is not compacted, then the binding can be configured to The `cache_client` and `cache_server` also combine to provide a staging area when producing new messages as `kafka` requires exact message length up front when producing new messages and `kafka` does not support producing multiple messages in parallel over the same network connection. +```yaml {3} + +``` + ## client > [Full config](./client.md) @@ -69,137 +53,6 @@ The `client` kind `kafka` binding receives inbound application streams and encod Conditional routes based on `kafka` `topic` names are used to route these network streams to an `exit` binding that ultimately reaches a `kafka` broker. -### options - -> `object` - -`kafka`-specific options. - -```yaml -options: - bootstrap: - - items-requests - - items-responses - topics: - - name: items-requests - defaultOffset: live -``` - -#### options.bootstrap - -> `array` of `string` - -Topics to bootstrap in cache server even when no clients. - -#### options.topics - -> `array` of `object` - -Topic configuration. - -#### topics[].name\* - -> `string` - -Topic name. - -#### topics[].defaultOffset - -> `enum` [ "live", "historical" ] | Default: `"historical"` - -Fetch offset to use for new consumers - -#### topics[].key - -> `object` of a named [`model`](../models/) - -Enforce validation for key - -#### topics[].value - -> `object` of a named [`model`](../models/) - -Enforce validation for value - -#### options.servers - -> `array` of `string` - -Bootstrap servers to use when connecting to `kafka` cluster. - -#### options.sasl - -> `object` - -SASL credentials to use when connecting to `kafka` brokers. - -#### sasl.mechanism\* - -> `enum` [ "plain", "scram-sha-1", "scram-sha-256", "scram-sha-512" ] - -SASL mechanism\ -Supports `plain` and `scram` mechanisms. - -#### sasl.username - -> `string` - -SASL username. - -#### sasl.password - -> `string` - -SASL password. - - - -### routes - -> `array` of `object` - -Conditional `kafka`-specific routes. - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items +```yaml {3} + ``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -##### when[].topic\* - -> `string` - -Topic name pattern. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -exit: echo_server -``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/kafka/cache_client.md b/src/reference/config/bindings/kafka/cache_client.md index 978525d0..5b937875 100644 --- a/src/reference/config/bindings/kafka/cache_client.md +++ b/src/reference/config/bindings/kafka/cache_client.md @@ -7,12 +7,12 @@ shortTitle: cache_client The kafka cache_client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index 1a9cf8cc..4746f12a 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -7,12 +7,12 @@ shortTitle: cache_server The kafka cache_server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/kafka/client.md b/src/reference/config/bindings/kafka/client.md index 8c5d1c54..bf24cebb 100644 --- a/src/reference/config/bindings/kafka/client.md +++ b/src/reference/config/bindings/kafka/client.md @@ -7,12 +7,12 @@ shortTitle: client The kafka client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/options.md b/src/reference/config/bindings/mqtt-kafka/.partials/options.md new file mode 100644 index 00000000..7d657ed2 --- /dev/null +++ b/src/reference/config/bindings/mqtt-kafka/.partials/options.md @@ -0,0 +1,86 @@ +### options + +> `object` + +`mqtt-kafka`-specific options for configuring the `kafka` topics that the proxy will use to route mqtt messages and session states; and define server reference of the MQTT server in Zilla + +#### options.server + +> `string` + +The server reference used by the MQTT server in Zilla. This config enables scaling of the MQTT server when running multiple Zilla instances as it uses [server redirection](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901255). + +```yaml +options: + server: mqtt-1.example.com:1883 +``` + +#### options.topics + +> `object` + +The `kafka` topics Zilla needs when routing MQTT messages + +```yaml +options: + topics: + sessions: mqtt-sessions + messages: mqtt-messages + retained: mqtt-retained +``` + +##### topics.sessions\* + +> `string` + +A Kafka topic for storing mqtt session states. + +::: warning cleanup.policy Required +A `compact` [cleanup.policy](https://kafka.apache.org/30/generated/topic_config.html#topicconfigs_cleanup.policy) is required. +::: + +##### topics.messages\* + +> `string` + +The default Kafka topic used for routing mqtt messages. + +##### topics.retained\* + +> `string` + +A Kafka topic for storing mqtt retained messages. + +::: info cleanup.policy Recommended +A `compact` [cleanup.policy](https://kafka.apache.org/30/generated/topic_config.html#topicconfigs_cleanup.policy) is recommended. +::: + +#### options.clients + +> `array` of `string` + +Pattern defining how to extract client identity from the topic. Using this we can ensure that all messages for the same client identity are produced to Kafka on the same topic partition. + +```yaml +options: + clients: + - place/{identity}/# +``` + +#### options.publish + +> `object` + +MQTT `publish`-specific options. + +##### publish.qosMax + +> `enum` [ "at_most_once", "at_least_once", "exactly_once" ] | default: "exactly_once" + +Highest allowed QOS level. + +```yaml +options: + publish: + qosMax: at_most_once +``` diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/proxy.yaml b/src/reference/config/bindings/mqtt-kafka/.partials/proxy.yaml index e69de29b..0d84d46a 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/proxy.yaml +++ b/src/reference/config/bindings/mqtt-kafka/.partials/proxy.yaml @@ -0,0 +1,21 @@ + mqtt_kafka_proxy: + type: mqtt-kafka + kind: proxy + options: + server: mqtt-1.example.com:1883 + topics: + sessions: mqtt-sessions + messages: mqtt-messages + retained: mqtt-retained + clients: + - place/{identity}/# + routes: + - when: + - publish: + - topic: place/+/device/# + - subscribe: + - topic: place/+/device/# + with: + messages: mqtt-devices + exit: kafka_cache_client + exit: kafka_cache_client diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md new file mode 100644 index 00000000..139e9bec --- /dev/null +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -0,0 +1,105 @@ +### routes + +> `array` of `object` + +Conditional `mqtt-kafka`-specific routes when adapting `mqtt` topic streams to `kafka` topic streams. + +```yaml +routes: + - when: + - publish: + - topic: place/+/device/# + - subscribe: + - topic: place/+/device/# + with: + messages: mqtt-devices + exit: kafka_cache_client +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - publish:clients +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route when adapting `mqtt` topic streams to `kafka` topic streams. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - publish: + - topic: place/# + - subscribe: + - topic: place/# +``` + +##### when[].publish + +> `array` of `object` + +Array of MQTT topic filters matching topic names for publish. + +```yaml +- publish: + - topic: place/# + - topic: subs/# +``` + +##### publish[].topic + +> `string` + +MQTT topic filter pattern. + +##### when[].subscribe + +> `array` of `object` + +Array of MQTT topic filters matching topic names for subscribe. + +```yaml +- subscribe: + - topic: place/# + - topic: subs/# +``` + +##### subscribe[].topic + +> `string` + +MQTT topic filter pattern. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +#### routes[].with + +> `object` + +Kafka parameters for matched route when adapting `mqtt` topic streams to `kafka` topic streams. + +```yaml +with: + messages: mqtt-devices +``` + +##### with.messages + +> `string` + +Kafka topic to use for the route. diff --git a/src/reference/config/bindings/mqtt-kafka/README.md b/src/reference/config/bindings/mqtt-kafka/README.md index fd4c8602..edd40d85 100644 --- a/src/reference/config/bindings/mqtt-kafka/README.md +++ b/src/reference/config/bindings/mqtt-kafka/README.md @@ -13,36 +13,6 @@ tag: # mqtt-kafka Binding -Zilla runtime mqtt-kafka binding. - -```yaml {2} -mqtt_kafka_proxy: - type: mqtt-kafka - kind: proxy - options: - server: mqtt-1.example.com:1883 - topics: - sessions: mqtt-sessions - messages: mqtt-messages - retained: mqtt-retained - clients: - - place/{identity}/# - routes: - - when: - - publish: - - topic: place/+/device/# - - subscribe: - - topic: place/+/device/# - with: - messages: mqtt-devices - exit: kafka_cache_client - exit: kafka_cache_client -``` - -## Configuration (\* required) - -### type: mqtt-kafka\* - Defines a binding with `mqtt-kafka` support, with `proxy` behavior. ## proxy @@ -51,213 +21,6 @@ Defines a binding with `mqtt-kafka` support, with `proxy` behavior. Behave as a `mqtt-kafka` `proxy`. -### options - -> `object` - -`mqtt-kafka`-specific options for configuring the `kafka` topics that the proxy will use to route mqtt messages and session states; and define server reference of the MQTT server in Zilla - -#### options.server - -> `string` - -The server reference used by the MQTT server in Zilla. This config enables scaling of the MQTT server when running multiple Zilla instances as it uses [server redirection](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901255). - -```yaml -options: - server: mqtt-1.example.com:1883 -``` - -#### options.topics - -> `object` - -The `kafka` topics Zilla needs when routing MQTT messages - -```yaml -options: - topics: - sessions: mqtt-sessions - messages: mqtt-messages - retained: mqtt-retained -``` - -##### topics.sessions\* - -> `string` - -A Kafka topic for storing mqtt session states. - -::: warning cleanup.policy Required -A `compact` [cleanup.policy](https://kafka.apache.org/30/generated/topic_config.html#topicconfigs_cleanup.policy) is required. -::: - -##### topics.messages\* - -> `string` - -The default Kafka topic used for routing mqtt messages. - -##### topics.retained\* - -> `string` - -A Kafka topic for storing mqtt retained messages. - -::: info cleanup.policy Recommended -A `compact` [cleanup.policy](https://kafka.apache.org/30/generated/topic_config.html#topicconfigs_cleanup.policy) is recommended. -::: - -#### options.clients - -> `array` of `string` - -Pattern defining how to extract client identity from the topic. Using this we can ensure that all messages for the same client identity are produced to Kafka on the same topic partition. - -```yaml -options: - clients: - - place/{identity}/# +```yaml {3} + ``` - -#### options.publish - -> `object` - -MQTT `publish`-specific options. - -##### publish.qosMax - -> `enum` [ "at_most_once", "at_least_once", "exactly_once" ] | default: "exactly_once" - -Highest allowed QOS level. - -```yaml -options: - publish: - qosMax: at_most_once -``` - -### routes - -> `array` of `object` - -Conditional `mqtt-kafka`-specific routes when adapting `mqtt` topic streams to `kafka` topic streams. - -```yaml -routes: - - when: - - publish: - - topic: place/+/device/# - - subscribe: - - topic: place/+/device/# - with: - messages: mqtt-devices - exit: kafka_cache_client -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - publish:clients -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route when adapting `mqtt` topic streams to `kafka` topic streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - publish: - - topic: place/# - - subscribe: - - topic: place/# -``` - -##### when[].publish - -> `array` of `object` - -Array of MQTT topic filters matching topic names for publish. - -```yaml -- publish: - - topic: place/# - - topic: subs/# -``` - -##### publish[].topic - -> `string` - -MQTT topic filter pattern. - -##### when[].subscribe - -> `array` of `object` - -Array of MQTT topic filters matching topic names for subscribe. - -```yaml -- subscribe: - - topic: place/# - - topic: subs/# -``` - -##### subscribe[].topic - -> `string` - -MQTT topic filter pattern. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -#### routes[].with - -> `object` - -Kafka parameters for matched route when adapting `mqtt` topic streams to `kafka` topic streams. - -```yaml -with: - messages: mqtt-devices -``` - -##### with.messages - -> `string` - -Kafka topic to use for the route. - -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: kafka_cache_client -``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/mqtt-kafka/proxy.md b/src/reference/config/bindings/mqtt-kafka/proxy.md index eb00c9a3..6a26158b 100644 --- a/src/reference/config/bindings/mqtt-kafka/proxy.md +++ b/src/reference/config/bindings/mqtt-kafka/proxy.md @@ -7,12 +7,12 @@ shortTitle: proxy The mqtt-kafka proxy binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/mqtt/.partials/client.yaml b/src/reference/config/bindings/mqtt/.partials/client.yaml index e69de29b..48dea020 100644 --- a/src/reference/config/bindings/mqtt/.partials/client.yaml +++ b/src/reference/config/bindings/mqtt/.partials/client.yaml @@ -0,0 +1,4 @@ + mqtt_client: + type: mqtt + kind: client + exit: mqtt_client_tcp diff --git a/src/reference/config/bindings/mqtt/.partials/options.md b/src/reference/config/bindings/mqtt/.partials/options.md new file mode 100644 index 00000000..67aa119e --- /dev/null +++ b/src/reference/config/bindings/mqtt/.partials/options.md @@ -0,0 +1,94 @@ + +### options + +> `object` + +`mqtt`-specific options. + +```yaml +options: + authorization: + my_jwt_guard: + credentials: + connect: + username: Bearer {credentials} + versions: + - v5 + - v3.1.1 +``` + +#### options.authorization + +> `object` as map of named objects + +Authorization by a named guard. + +```yaml +authorization: + my_jwt_guard: + credentials: + connect: + username: Bearer {credentials} +``` + +#### authorization.credentials + +> `object` + +Defines how to extract credentials from the MQTT connect packet. + +##### credentials.connect + +> `object` + +MQTT connect packet properties + +##### connect.username + +> `string` + +Extract credentials from the MQTT connect packet username property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. + +##### connect.password + +> `string` + +Extract credentials from the MQTT connect packet password property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. + +#### options.versions + +> `array` of `enum` [ "v5", "v3.1.1" ] + +Supported protocol versions. + +#### options.topics + +> `array` of `object` + +Topic configuration. + +#### topics[].name\* + +> `string` + +Topic name. + +#### topics[].content + +> `object` of a named [`model`](../models/) + +Enforce validation for content + +#### topics[].user-properties + +> `map` of "name: [model](../models/)" properties + +Enforce validation for user provided properties + +```yaml +user-properties: + my-app-prop: + type: integer + minimum: 0 + maximum: 100 +``` diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md new file mode 100644 index 00000000..147476b4 --- /dev/null +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -0,0 +1,82 @@ +### routes + +> `array` of `object` + +Conditional `mqtt`-specific routes. + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - session: + - client-id: "*" + - publish: + - topic: command/one + - topic: command/two + - subscribe: + - topic: reply +``` + +##### when[].session + +> `array` of `object` + +Array of mqtt session properties + +##### session[].client-id + +> `string` + +An MQTT client identifier, allowing the usage of wildcards. + +##### when[].publish + +> `array` of `object` + +Array of MQTT topic names for publish capability. + +###### publish[].topic + +> `string` + +##### when[].subscribe + +> `array` of `object` + +Array of MQTT topic names for subscribe capability. + +###### subscribe[].topic + +> `string` + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: mqtt_kafka_proxy +``` diff --git a/src/reference/config/bindings/mqtt/.partials/server.yaml b/src/reference/config/bindings/mqtt/.partials/server.yaml index e69de29b..0572d7eb 100644 --- a/src/reference/config/bindings/mqtt/.partials/server.yaml +++ b/src/reference/config/bindings/mqtt/.partials/server.yaml @@ -0,0 +1,22 @@ + mqtt_server: + type: mqtt + kind: server + options: + authorization: + my_jwt_guard: + credentials: + connect: + username: Bearer {credentials} + versions: + - v5 + - v3.1.1 + routes: + - when: + - session: + - client-id: "*" + - publish: + - topic: command/one + - topic: command/two + - subscribe: + - topic: reply + exit: mqtt_kafka_proxy diff --git a/src/reference/config/bindings/mqtt/README.md b/src/reference/config/bindings/mqtt/README.md index 4b6e75a2..4331637f 100644 --- a/src/reference/config/bindings/mqtt/README.md +++ b/src/reference/config/bindings/mqtt/README.md @@ -13,37 +13,6 @@ tag: # mqtt Binding -Zilla runtime mqtt binding. - -```yaml {2} -mqtt_server: - type: mqtt - kind: server - options: - authorization: - my_jwt_guard: - credentials: - connect: - username: Bearer {credentials} - versions: - - v5 - - v3.1.1 - routes: - - when: - - session: - - client-id: "*" - - publish: - - topic: command/one - - topic: command/two - - subscribe: - - topic: reply - exit: mqtt_kafka_proxy -``` - -## Configuration (\* required) - -### type: mqtt\* - Defines a binding with `mqtt` protocol support, with `server` behavior. ## server @@ -54,195 +23,16 @@ The `server` kind `mqtt` binding decodes the MQTT protocol on the inbound networ Conditional routes based on the `topic` `name` are used to route these application streams to an `exit` binding. +```yaml {3} + +``` + ## client > [Full config](./client.md) The `client` kind `mqtt` binding encodes the MQTT protocol to the outbound network stream. - - -### options - -> `object` - -`mqtt`-specific options. - -```yaml -options: - authorization: - my_jwt_guard: - credentials: - connect: - username: Bearer {credentials} - versions: - - v5 - - v3.1.1 +```yaml {3} + ``` - -#### options.authorization - -> `object` as map of named objects - -Authorization by a named guard. - -```yaml -authorization: - my_jwt_guard: - credentials: - connect: - username: Bearer {credentials} -``` - -#### authorization.credentials - -> `object` - -Defines how to extract credentials from the MQTT connect packet. - -##### credentials.connect - -> `object` - -MQTT connect packet properties - -##### connect.username - -> `string` - -Extract credentials from the MQTT connect packet username property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -##### connect.password - -> `string` - -Extract credentials from the MQTT connect packet password property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -#### options.versions - -> `array` of `enum` [ "v5", "v3.1.1" ] - -Supported protocol versions. - -#### options.topics - -> `array` of `object` - -Topic configuration. - -#### topics[].name\* - -> `string` - -Topic name. - -#### topics[].content - -> `object` of a named [`model`](../models/) - -Enforce validation for content - -#### topics[].user-properties - -> `map` of "name: [model](../models/)" properties - -Enforce validation for user provided properties - -```yaml -user-properties: - my-app-prop: - type: integer - minimum: 0 - maximum: 100 -``` - -### routes - -> `array` of `object` - -Conditional `mqtt`-specific routes. - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - session: - - client-id: "*" - - publish: - - topic: command/one - - topic: command/two - - subscribe: - - topic: reply -``` - -##### when[].session - -> `array` of `object` - -Array of mqtt session properties - -##### session[].client-id - -> `string` - -An MQTT client identifier, allowing the usage of wildcards. - -##### when[].publish - -> `array` of `object` - -Array of MQTT topic names for publish capability. - -###### publish[].topic - -> `string` - -##### when[].subscribe - -> `array` of `object` - -Array of MQTT topic names for subscribe capability. - -###### subscribe[].topic - -> `string` - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: mqtt_kafka_proxy -``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index 305c9cf2..dd8c3df9 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -7,12 +7,12 @@ shortTitle: client The mqtt client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 6544acfe..cb4ce593 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -7,12 +7,12 @@ shortTitle: server The mqtt server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md new file mode 100644 index 00000000..5b6771d3 --- /dev/null +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -0,0 +1,64 @@ +### options + +> `object` + +`openapi-asyncapi`-specific options. + +```yaml +options: + specs: + openapi: + my-openapi-spec: spec/openapi.yaml + asyncapi: + my-asyncapi-spec: spec/asyncapi.yaml +``` + +#### options.specs + +> `object` + +OpenAPI and AsyncAPI specs definition. + +##### specs.openapi + +> `object` of `name: value` properties + +#### openapi.catalog + +> `object` as map of named properties + +catalog specific options. + +#### catalog.subject + +> `string` + +Subject name used when storing the catalog artifact. + +#### catalog.version + +> `string` + +Catalog artifact version to use. + +##### specs.asyncapi + +> `object` of `name: value` properties + +#### asyncapi.catalog + +> `object` as map of named properties + +`catalog` catalog specific options. + +#### catalog.subject + +> `string` + +Subject name used when storing the catalog artifact. + +#### catalog.version + +> `string` + +Catalog artifact version to use. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/proxy.yaml b/src/reference/config/bindings/openapi-asyncapi/.partials/proxy.yaml index e69de29b..9e85354f 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/proxy.yaml +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/proxy.yaml @@ -0,0 +1,23 @@ + openapi_asyncapi_proxy: + type: openapi-asyncapi + kind: proxy + options: + specs: + openapi: + my-openapi-spec: + catalog: + my_catalog: + subject: petstore + version: latest + asyncapi: + my-asyncapi-spec: + catalog: + my_catalog: + subject: petstore + version: latest + routes: + - when: + - api-id: my-openapi-spec + exit: asyncapi_client + with: + api-id: my-asyncapi-spec diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md new file mode 100644 index 00000000..b0aaabcd --- /dev/null +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -0,0 +1,60 @@ +### routes + +> `array` of `object` + +Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations to `asyncapi` operations. + +#### routes[].when + +> `array` of `object` + +List of conditions to match this route when adapting `openapi` request-response streams to `asyncapi` streams. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +##### when[].api-id + +> `string` + +OpenAPI spec identifier that matches from the `openapi` binding request stream. + +##### when[].operation-id + +> `string` + +OpenAPI OperationId that can be mapped between OpenAPI and AsyncAPI spec + +#### routes[].exit\* + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +routes: + - when: + ... + exit: asyncapi_client +``` + +#### routes[].with + +> `object` + +Defines the route with the AsyncAPI spec identifier and OperationId. + +```yaml +with: + api-id: my-asyncapi-spec +``` + +##### with.api-id + +> `string` + +AsyncAPI spec identifier that the route exits with to the next binding + +##### with.operation-id + +> `string` + +AsyncAPI OperationId that the route exits with to the next binding diff --git a/src/reference/config/bindings/openapi-asyncapi/README.md b/src/reference/config/bindings/openapi-asyncapi/README.md index 873e7cbd..dd5949f2 100644 --- a/src/reference/config/bindings/openapi-asyncapi/README.md +++ b/src/reference/config/bindings/openapi-asyncapi/README.md @@ -10,42 +10,9 @@ category: tag: - Proxy --- - # openapi-asyncapi Binding -Zilla runtime `openapi-asyncapi` binding. - -```yaml {2} -openapi_asyncapi_proxy: - type: openapi-asyncapi - kind: proxy - options: - specs: - openapi: - my-openapi-spec: - catalog: - my_catalog: - subject: petstore - version: latest - asyncapi: - my-asyncapi-spec: - catalog: - my_catalog: - subject: petstore - version: latest - routes: - - when: - - api-id: my-openapi-spec - exit: asyncapi_client - with: - api-id: my-asyncapi-spec -``` - -## Configuration (\* required) - -### type: openapi-asyncapi\* - The `proxy` kind `openapi-asyncapi` binding adapts OpenAPI request-response streams to AsyncAPI streams. ## proxy @@ -54,136 +21,6 @@ The `proxy` kind `openapi-asyncapi` binding adapts OpenAPI request-response stre Behave as an `openapi-asyncapi` `proxy`. -### options - -> `object` - -`openapi-asyncapi`-specific options. - -```yaml -options: - specs: - openapi: - my-openapi-spec: spec/openapi.yaml - asyncapi: - my-asyncapi-spec: spec/asyncapi.yaml +```yaml {3} + ``` - -#### options.specs - -> `object` - -OpenAPI and AsyncAPI specs definition. - -##### specs.openapi - -> `object` of `name: value` properties - -#### openapi.catalog - -> `object` as map of named properties - -catalog specific options. - -#### catalog.subject - -> `string` - -Subject name used when storing the catalog artifact. - -#### catalog.version - -> `string` - -Catalog artifact version to use. - -##### specs.asyncapi - -> `object` of `name: value` properties - -#### asyncapi.catalog - -> `object` as map of named properties - -`catalog` catalog specific options. - -#### catalog.subject - -> `string` - -Subject name used when storing the catalog artifact. - -#### catalog.version - -> `string` - -Catalog artifact version to use. - -### routes - -> `array` of `object` - -Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations to `asyncapi` operations. - -#### routes[].when - -> `array` of `object` - -List of conditions to match this route when adapting `openapi` request-response streams to `asyncapi` streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -##### when[].api-id - -> `string` - -OpenAPI spec identifier that matches from the `openapi` binding request stream. - -##### when[].operation-id - -> `string` - -OpenAPI OperationId that can be mapped between OpenAPI and AsyncAPI spec - -#### routes[].exit\* - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -routes: - - when: - ... - exit: asyncapi_client -``` - -#### routes[].with - -> `object` - -Defines the route with the AsyncAPI spec identifier and OperationId. - -```yaml -with: - api-id: my-asyncapi-spec -``` - -##### with.api-id - -> `string` - -AsyncAPI spec identifier that the route exits with to the next binding - -##### with.operation-id - -> `string` - -AsyncAPI OperationId that the route exits with to the next binding - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/openapi-asyncapi/proxy.md b/src/reference/config/bindings/openapi-asyncapi/proxy.md index 98c8a817..40f0b7be 100644 --- a/src/reference/config/bindings/openapi-asyncapi/proxy.md +++ b/src/reference/config/bindings/openapi-asyncapi/proxy.md @@ -7,12 +7,12 @@ shortTitle: proxy The openapi-asyncapi proxy binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/openapi/.partials/client.yaml b/src/reference/config/bindings/openapi/.partials/client.yaml index e69de29b..7dd17bab 100644 --- a/src/reference/config/bindings/openapi/.partials/client.yaml +++ b/src/reference/config/bindings/openapi/.partials/client.yaml @@ -0,0 +1,15 @@ + openapi_client: + type: openapi + kind: client + options: + tcp: + host: localhost + port: 8080 + specs: + petstore: + servers: + - url: http://localhost:9090 + catalog: + my_catalog: + subject: petstore + version: latest diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md new file mode 100644 index 00000000..8abcd076 --- /dev/null +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -0,0 +1,167 @@ +### options + +> `object` + +`openapi`-specific options. + +```yaml +options: + specs: + petstore: + servers: + - url: http://localhost:9090 + catalog: + my_catalog: + subject: petstore + version: latest +``` + +#### options.specs + +> `object` as map of named properties + +`specs` specific options + +#### specs.catalog + +> `object` as map of named properties + +catalog specific options. + +#### catalog.subject + +> `string` + +Subject name used when storing the catalog artifact. + +#### catalog.version + +> `string` + +Catalog artifact version to use. + +#### specs.servers + +> `object` + +#### servers.url + +> `string` + +The server url to match in openapi spec + +#### options.http + +> `object` + +`http` specific options. + +##### http.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + +##### authorization.credentials + +> `object` + +Defines how to extract credentials from the HTTP request. + +##### credentials.cookies + +> `map` of `name: value` properties + +Named cookie value pattern with `{credentials}`. + +##### credentials.headers + +> `map` of `name: value` properties + +Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. + +##### credentials.query + +> `map` of `name: value` properties + +Named query parameter value pattern with `{credentials}`. + +#### options.tcp + +> `object` + +`client` specific `tcp` options. + +##### tcp.host + +> `string` + +Hostname or IP address. + +##### tcp.port + +> `integer` | `string` | `array` of `integer` | `array` of `string` + +Port number(s), including port number ranges. + +#### options.tls + +> `object` + +`tls` specific options. + +##### tls.version + +> `string` + +Protocol version. + +##### tls.keys + +> `array` of `string` + +A list of reference names for the Vault key. + +##### tls.trust + +> `array` of `string` + +A list of reference names for the Vault certificate. + +##### tls.signers + +> `array` of `string` + +A list of reference names for the Vault signer certificate. + +##### tls.trustcacerts + +> `boolean` | Default: `true` when trust is `null` + +Trust CA certificates. + +##### tls.sni\* + +> `array` of `string` + +A list of the Server Name Indications. + +##### tls.alpn + +> `array` of `string` + +Application protocols. + +##### tls.mutual + +> `enum` [ "required", "requested", "none" ] | Default: `"none"` + +Mutual authentication. diff --git a/src/reference/config/bindings/openapi/.partials/server.yaml b/src/reference/config/bindings/openapi/.partials/server.yaml index e69de29b..e0dbafb3 100644 --- a/src/reference/config/bindings/openapi/.partials/server.yaml +++ b/src/reference/config/bindings/openapi/.partials/server.yaml @@ -0,0 +1,13 @@ + openapi_server: + type: openapi + kind: server + options: + specs: + petstore: + servers: + - url: http://localhost:9090 + catalog: + my_catalog: + subject: petstore + version: latest + exit: openapi_client diff --git a/src/reference/config/bindings/openapi/README.md b/src/reference/config/bindings/openapi/README.md index 0f70d084..3776b4df 100644 --- a/src/reference/config/bindings/openapi/README.md +++ b/src/reference/config/bindings/openapi/README.md @@ -14,43 +14,6 @@ tag: # openapi Binding -Zilla runtime `openapi` binding. - -```yaml {2} -openapi_server: - type: openapi - kind: server - options: - specs: - petstore: - servers: - - url: http://localhost:9090 - catalog: - my_catalog: - subject: petstore - version: latest - exit: openapi_client -openapi_client: - type: openapi - kind: client - options: - tcp: - host: localhost - port: 8080 - specs: - petstore: - servers: - - url: http://localhost:9090 - catalog: - my_catalog: - subject: petstore - version: latest -``` - -## Configuration (\* required) - -### type: openapi\* - Defines a binding with `openapi` spec, with `server` or `client` behavior. ## server @@ -59,194 +22,17 @@ Defines a binding with `openapi` spec, with `server` or `client` behavior. The `server` kind `openapi` binding creates composite of `tcp`, `tls`, and `http` bindings with server kind and adapts HTTP request-response streams to OpenAPI request-response streams. +```yaml {3} + +``` + ## client > [Full config](./client.md) The `client` kind `openapi` binding creates composite of `http`, `tls`, and `tcp` bindings with client kind and adapts OpenAPI request-response streams to HTTP request-response streams. -### options - -> `object` - -`openapi`-specific options. - -```yaml -options: - specs: - petstore: - servers: - - url: http://localhost:9090 - catalog: - my_catalog: - subject: petstore - version: latest -``` - -#### options.specs - -> `object` as map of named properties - -`specs` specific options - -#### specs.catalog - -> `object` as map of named properties - -catalog specific options. - -#### catalog.subject - -> `string` - -Subject name used when storing the catalog artifact. - -#### catalog.version - -> `string` - -Catalog artifact version to use. - -#### specs.servers - -> `object` - -#### servers.url - -> `string` - -The server url to match in openapi spec - -#### options.http - -> `object` - -`http` specific options. - -##### http.authorization - -> `object` as map of named properties - -Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. - -```yaml -authorization: - my_jwt_guard: - credentials: - headers: - authorization: Bearer {credentials} +```yaml {3} + ``` -##### authorization.credentials - -> `object` - -Defines how to extract credentials from the HTTP request. - -##### credentials.cookies - -> `map` of `name: value` properties - -Named cookie value pattern with `{credentials}`. - -##### credentials.headers - -> `map` of `name: value` properties - -Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -##### credentials.query - -> `map` of `name: value` properties - -Named query parameter value pattern with `{credentials}`. - -#### options.tcp - -> `object` - -`client` specific `tcp` options. - -##### tcp.host - -> `string` - -Hostname or IP address. - -##### tcp.port - -> `integer` | `string` | `array` of `integer` | `array` of `string` - -Port number(s), including port number ranges. - -#### options.tls - -> `object` - -`tls` specific options. - -##### tls.version - -> `string` - -Protocol version. - -##### tls.keys - -> `array` of `string` - -A list of reference names for the Vault key. - -##### tls.trust - -> `array` of `string` - -A list of reference names for the Vault certificate. - -##### tls.signers - -> `array` of `string` - -A list of reference names for the Vault signer certificate. - -##### tls.trustcacerts - -> `boolean` | Default: `true` when trust is `null` - -Trust CA certificates. - -##### tls.sni\* - -> `array` of `string` - -A list of the Server Name Indications. - -##### tls.alpn - -> `array` of `string` - -Application protocols. - -##### tls.mutual - -> `enum` [ "required", "requested", "none" ] | Default: `"none"` - -Mutual authentication. - -### exit - -> `string` - -Default exit binding. - -```yaml -exit: echo_server -``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md index c902b27d..3997f32b 100644 --- a/src/reference/config/bindings/openapi/client.md +++ b/src/reference/config/bindings/openapi/client.md @@ -7,12 +7,11 @@ shortTitle: client The openapi client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md index 3f2525c4..3f6405f9 100644 --- a/src/reference/config/bindings/openapi/server.md +++ b/src/reference/config/bindings/openapi/server.md @@ -7,12 +7,11 @@ shortTitle: server The openapi server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + diff --git a/src/reference/config/bindings/proxy/.partials/client.yaml b/src/reference/config/bindings/proxy/.partials/client.yaml index e69de29b..fc7c579c 100644 --- a/src/reference/config/bindings/proxy/.partials/client.yaml +++ b/src/reference/config/bindings/proxy/.partials/client.yaml @@ -0,0 +1,4 @@ + proxy_server: + type: proxy + kind: client + exit: tcp_server diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md new file mode 100644 index 00000000..239f3d51 --- /dev/null +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -0,0 +1,96 @@ +### routes + +> `array` of `object` + +Conditional `proxy`-specific routes. + +```yaml +routes: + - when: + - transport: stream + family: inet4 + destination: + port: 443 + exit: tls_server +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +##### when[].transport + +> `enum` [ "stream", "datagram" ] + +Transport type. + +##### when[].family + +> `enum` [ "inet", "inet4", "inet6", "unix" ] + +Address family. + +##### when[].source + +> `object` + +Source address. + +##### source.host + +> `string` + +Hostname or IP address. + +##### source.port + +> `integer` + +Port number. + +##### when[].destination + +> `object` + +Destination address. + +##### destination.host + +> `string` + +Hostname or IP address. + +##### destination.port + +> `integer` + +Port number. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: echo_server +``` diff --git a/src/reference/config/bindings/proxy/.partials/server.yaml b/src/reference/config/bindings/proxy/.partials/server.yaml index e69de29b..13ef2c64 100644 --- a/src/reference/config/bindings/proxy/.partials/server.yaml +++ b/src/reference/config/bindings/proxy/.partials/server.yaml @@ -0,0 +1,10 @@ + proxy_server: + type: proxy + kind: server + routes: + - when: + - transport: stream + family: inet4 + destination: + port: 443 + exit: tls_server diff --git a/src/reference/config/bindings/proxy/README.md b/src/reference/config/bindings/proxy/README.md index 1de6a51b..4141bc9b 100644 --- a/src/reference/config/bindings/proxy/README.md +++ b/src/reference/config/bindings/proxy/README.md @@ -14,25 +14,6 @@ tag: # proxy Binding -Zilla runtime proxy binding. - -```yaml {2} -proxy_server: - type: proxy - kind: server - routes: - - when: - - transport: stream - family: inet4 - destination: - port: 443 - exit: tls_server -``` - -## Configuration (\* required) - -### type: proxy\* - Defines a binding with `proxy` protocol support, with `server` or `client` behavior. Conditional routes based on the network transport type or network addresses are used to route these streams to an `exit` binding. ## server @@ -41,115 +22,16 @@ Defines a binding with `proxy` protocol support, with `server` or `client` behav The `server` kind `proxy` binding decodes `Proxy v2` protocol on the inbound network stream, producing higher level application streams for each request. +```yaml {3} + +``` + ## client > [Full config](./client.md) The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via `Proxy v2` protocol. - - -### routes - -> `array` of `object` - -Conditional `proxy`-specific routes. - -```yaml -routes: - - when: - - transport: stream - family: inet4 - destination: - port: 443 - exit: tls_server -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -##### when[].transport - -> `enum` [ "stream", "datagram" ] - -Transport type. - -##### when[].family - -> `enum` [ "inet", "inet4", "inet6", "unix" ] - -Address family. - -##### when[].source - -> `object` - -Source address. - -##### source.host - -> `string` - -Hostname or IP address. - -##### source.port - -> `integer` - -Port number. - -##### when[].destination - -> `object` - -Destination address. - -##### destination.host - -> `string` - -Hostname or IP address. - -##### destination.port - -> `integer` - -Port number. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: echo_server +```yaml {3} + ``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/proxy/client.md b/src/reference/config/bindings/proxy/client.md index 88d45e77..f47c398e 100644 --- a/src/reference/config/bindings/proxy/client.md +++ b/src/reference/config/bindings/proxy/client.md @@ -7,12 +7,11 @@ shortTitle: client The proxy client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + diff --git a/src/reference/config/bindings/proxy/server.md b/src/reference/config/bindings/proxy/server.md index c8c8e9f3..1432e72b 100644 --- a/src/reference/config/bindings/proxy/server.md +++ b/src/reference/config/bindings/proxy/server.md @@ -7,12 +7,11 @@ shortTitle: server The proxy server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + diff --git a/src/reference/config/bindings/sse-kafka/.partials/proxy.yaml b/src/reference/config/bindings/sse-kafka/.partials/proxy.yaml index e69de29b..fa98b1c7 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/proxy.yaml +++ b/src/reference/config/bindings/sse-kafka/.partials/proxy.yaml @@ -0,0 +1,11 @@ + sse_kafka_proxy: + type: sse-kafka + kind: proxy + routes: + - when: + - path: /items + exit: kafka_cache_client + with: + topic: items-snapshots + event: + id: '["${base64(key)}","${etag}"]' diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md new file mode 100644 index 00000000..c611779b --- /dev/null +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -0,0 +1,105 @@ +### routes + +> `array` of `object` + +Conditional `sse-kafka`-specific routes for adapting `sse` data streams to `kafka` data streams. + +```yaml +routes: + - when: + - path: /items + exit: kafka_cache_client + with: + topic: items-snapshots + event: + id: '["${base64(key)}","${etag}"]' +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - path: /items +``` + +##### when[].path\* + +> `string` + +Path with optional embedded parameter names, such as `/{topic}`. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: kafka_cache_client +``` + +#### routes[].with + +> `object` + +Kafka parameters used when adapting `sse` data streams to `kafka` data streams. + +##### with.topic\* + +> `string` + +Topic name, optionally referencing path parameter such as `${params.topic}`. + +##### with.filters + +> `array` of `object` + +Kafka filters for matched route when adapting `sse` data streams to `kafka` data streams. + +List of criteria (any match). All specified headers and key must match for the combined criteria to match. + +##### filters[].key + +> `string` + +Message key, optionally referencing path parameter such as `${params.key}`. + +##### filters[].headers + +> `map` of `name: value` properties + +Message headers, with value optionally referencing path parameter such as `${params.headerX}`. + +##### with.event + +> `object` + +Defines the SSE event syntax used when delivering Kafka messages to SSE clients. + +##### event.id\* + +> `enum` [ `"${etag}"`, `"["${base64(key)}","${etag}"]"` ] | Default: `"${etag}"` + +Format of `id` field in `sse` `event` diff --git a/src/reference/config/bindings/sse-kafka/README.md b/src/reference/config/bindings/sse-kafka/README.md index 533b2fce..445ef92b 100644 --- a/src/reference/config/bindings/sse-kafka/README.md +++ b/src/reference/config/bindings/sse-kafka/README.md @@ -13,26 +13,6 @@ tag: # sse-kafka Binding -Zilla runtime sse-kafka binding. - -```yaml {2} -sse_kafka_proxy: - type: sse-kafka - kind: proxy - routes: - - when: - - path: /items - exit: kafka_cache_client - with: - topic: items-snapshots - event: - id: '["${base64(key)}","${etag}"]' -``` - -## Configuration (\* required) - -### type: sse-kafka\* - Defines a binding with `sse-kafka` support, with `proxy` behavior. ## proxy @@ -49,143 +29,6 @@ The event `id` can be configured to include the message `key` and `etag` of each When a `kafka` tombstone (`null` value) message is received by the `sse-kafka` binding, it delivers a `delete` event to the `sse` client. This informs the client which specific message has been deleted by observing the message key from the `sse` `delete` event `id`. -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: kafka_cache_client -``` - -### routes - -> `array` of `object` - -Conditional `sse-kafka`-specific routes for adapting `sse` data streams to `kafka` data streams. - -```yaml -routes: - - when: - - path: /items - exit: kafka_cache_client - with: - topic: items-snapshots - event: - id: '["${base64(key)}","${etag}"]' -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - path: /items -``` - -##### when[].path\* - -> `string` - -Path with optional embedded parameter names, such as `/{topic}`. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: kafka_cache_client -``` - -#### routes[].with - -> `object` - -Kafka parameters used when adapting `sse` data streams to `kafka` data streams. - -##### with.topic\* - -> `string` - -Topic name, optionally referencing path parameter such as `${params.topic}`. - -##### with.filters - -> `array` of `object` - -Kafka filters for matched route when adapting `sse` data streams to `kafka` data streams. - -List of criteria (any match). All specified headers and key must match for the combined criteria to match. - -##### filters[].key - -> `string` - -Message key, optionally referencing path parameter such as `${params.key}`. - -##### filters[].headers - -> `map` of `name: value` properties - -Message headers, with value optionally referencing path parameter such as `${params.headerX}`. - -##### with.event - -> `object` - -Defines the SSE event syntax used when delivering Kafka messages to SSE clients. - -##### event.id\* - -> `enum` [ `"${etag}"`, `"["${base64(key)}","${etag}"]"` ] | Default: `"${etag}"` - -Format of `id` field in `sse` `event` - -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "http" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - http.* +```yaml {3} + ``` - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/sse-kafka/proxy.md b/src/reference/config/bindings/sse-kafka/proxy.md index 2791066f..c8d89f9d 100644 --- a/src/reference/config/bindings/sse-kafka/proxy.md +++ b/src/reference/config/bindings/sse-kafka/proxy.md @@ -7,12 +7,11 @@ shortTitle: proxy The sse-kafka proxy binding ```yaml {3} - + ``` ## Configuration (\* required) - - + diff --git a/src/reference/config/bindings/sse/.partials/client.yaml b/src/reference/config/bindings/sse/.partials/client.yaml index e69de29b..523235a4 100644 --- a/src/reference/config/bindings/sse/.partials/client.yaml +++ b/src/reference/config/bindings/sse/.partials/client.yaml @@ -0,0 +1,4 @@ + sse_server: + type: sse + kind: client + exit: tcp_client diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md new file mode 100644 index 00000000..34744506 --- /dev/null +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -0,0 +1,34 @@ +### options + +> `object` + +`sse`-specific options. + +```yaml +options: + retry: 2000 +``` + +#### options.retry + +> `integer` | Default: `2000` + +Retry delay (ms) + +#### options.requests + +> `array` of `object` + +the `requests`-specific options. + +##### requests[].path + +> `string` + +The path selector. + +##### requests[].content + +> `object` of a named [`model`](../models/) + +Enforce validation for the request content. diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md new file mode 100644 index 00000000..25f2e35e --- /dev/null +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -0,0 +1,60 @@ +### routes + +> `array` of `object` + +Conditional `sse`-specific routes. + +```yaml +routes: + - guarded: + my_guard: + - read:items + when: + - path: /items + exit: sse_kafka_proxy +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - path: /items +``` + +##### when[].path\* + +> `string` + +Path pattern. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: sse_kafka_proxy +``` diff --git a/src/reference/config/bindings/sse/.partials/server.yaml b/src/reference/config/bindings/sse/.partials/server.yaml index e69de29b..6851449b 100644 --- a/src/reference/config/bindings/sse/.partials/server.yaml +++ b/src/reference/config/bindings/sse/.partials/server.yaml @@ -0,0 +1,4 @@ + sse_server: + type: sse + kind: server + exit: sse_kafka_proxy diff --git a/src/reference/config/bindings/sse/README.md b/src/reference/config/bindings/sse/README.md index 12e15cfa..1e00f6fb 100644 --- a/src/reference/config/bindings/sse/README.md +++ b/src/reference/config/bindings/sse/README.md @@ -13,20 +13,7 @@ tag: # sse Binding -Zilla runtime sse binding. - -```yaml {2} -sse_server: - type: sse - kind: server - exit: sse_kafka_proxy -``` - -## Configuration (\* required) - -### type: sse\* - -Defines a binding with Server Sent Events (sse) protocol support, with `server` behavior. +Defines a binding with Server Sent Events (SSE) protocol support, with `server` behavior. ## server @@ -36,139 +23,16 @@ The `server` kind `sse` binding converts inbound `http` request-response streams Messages received on the `sse` response stream are encoded using `Server Sent Events` protocol, including support for custom `event` types and last event `id`. +```yaml {3} + +``` + ## client > [Full config](./client.md) The `client` kind `sse` binding converts outbound `see` request-response streams into `http` request-response streams. -### options - -> `object` - -`sse`-specific options. - -```yaml -options: - retry: 2000 +```yaml {3} + ``` - -#### options.retry - -> `integer` | Default: `2000` - -Retry delay (ms) - -#### options.requests - -> `array` of `object` - -the `requests`-specific options. - -##### requests[].path - -> `string` - -The path selector. - -##### requests[].content - -> `object` of a named [`model`](../models/) - -Enforce validation for the request content. - -### exit - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: sse_kafka_proxy -``` - -### routes - -> `array` of `object` - -Conditional `sse`-specific routes. - -```yaml -routes: - - guarded: - my_guard: - - read:items - when: - - path: /items - exit: sse_kafka_proxy -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - path: /items -``` - -##### when[].path\* - -> `string` - -Path pattern. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: sse_kafka_proxy -``` - -### telemetry - -> `object` - -Defines the desired telemetry for the binding. - -#### telemetry.metrics - -> `enum` [ "stream", "http" ] - -Telemetry metrics to track - -```yaml -telemetry: - metrics: - - stream.* - - http.* -``` - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/sse/client.md b/src/reference/config/bindings/sse/client.md index f8a69bef..f9690391 100644 --- a/src/reference/config/bindings/sse/client.md +++ b/src/reference/config/bindings/sse/client.md @@ -7,12 +7,12 @@ shortTitle: client The sse client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + - + diff --git a/src/reference/config/bindings/sse/server.md b/src/reference/config/bindings/sse/server.md index 19f981d3..4d4b9d5c 100644 --- a/src/reference/config/bindings/sse/server.md +++ b/src/reference/config/bindings/sse/server.md @@ -7,12 +7,12 @@ shortTitle: server The sse server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + - + diff --git a/src/reference/config/bindings/tcp/.partials/client.yaml b/src/reference/config/bindings/tcp/.partials/client.yaml index e69de29b..b4bf595f 100644 --- a/src/reference/config/bindings/tcp/.partials/client.yaml +++ b/src/reference/config/bindings/tcp/.partials/client.yaml @@ -0,0 +1,3 @@ + tcp_client: + type: tcp + kind: client diff --git a/src/reference/config/bindings/tcp/.partials/options.md b/src/reference/config/bindings/tcp/.partials/options.md new file mode 100644 index 00000000..2afb95ae --- /dev/null +++ b/src/reference/config/bindings/tcp/.partials/options.md @@ -0,0 +1,23 @@ +### options + +> `object` + +`tcp`-specific options. + +```yaml +options: + host: 0.0.0.0 + port: 12345 +``` + +#### options.host + +> `string` + +Hostname or IP address. + +#### options.port + +> `integer` | `string` | `array` of `integer` | `array` of `string` + +Port number(s), including port number ranges. diff --git a/src/reference/config/bindings/tcp/.partials/routes.md b/src/reference/config/bindings/tcp/.partials/routes.md new file mode 100644 index 00000000..119a25d2 --- /dev/null +++ b/src/reference/config/bindings/tcp/.partials/routes.md @@ -0,0 +1,49 @@ +### routes + +> `array` of `object` + +Conditional `tcp`-specific routes. + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +##### when[].authority + +> `string` + +Associated authority. + +##### when[].cidr + +> `string` + +CIDR mask. + +##### when[].port + +> `integer` | `string` | `array` of `integer` | `array` of `string` + +Port number(s), including port number ranges. + +#### routes[].exit\* + +> `string` + +Next binding when following this route, for kind `server` only. + +```yaml +routes: + - when: + ... + exit: echo_server +``` diff --git a/src/reference/config/bindings/tcp/.partials/server.yaml b/src/reference/config/bindings/tcp/.partials/server.yaml index e69de29b..77ac059c 100644 --- a/src/reference/config/bindings/tcp/.partials/server.yaml +++ b/src/reference/config/bindings/tcp/.partials/server.yaml @@ -0,0 +1,7 @@ + tcp_server: + type: tcp + kind: server + exit: echo_server + options: + host: 0.0.0.0 + port: 12345 diff --git a/src/reference/config/bindings/tcp/README.md b/src/reference/config/bindings/tcp/README.md index c32b2cc8..f999c653 100644 --- a/src/reference/config/bindings/tcp/README.md +++ b/src/reference/config/bindings/tcp/README.md @@ -13,22 +13,6 @@ tag: # tcp Binding -Zilla runtime tcp binding. - -```yaml {2} -tcp_server: - type: tcp - kind: server - exit: echo_server - options: - host: 0.0.0.0 - port: 12345 -``` - -## Configuration (\* required) - -### type: tcp\* - Defines a binding with `tcp` protocol support, with `server` or `client` behavior. Conditional routes based on the hostname authority and network address mask are used to route these streams to an `exit` binding. @@ -39,100 +23,16 @@ Conditional routes based on the hostname authority and network address mask are The `server` kind `tcp` binding listens for inbound socket connections, producing higher level application streams for each remote `tcp` client. +```yaml {3} + +``` + ## client > [Full config](./client.md) The `client` kind `tcp` binding receives inbound application streams and initiates outbound `tcp` network connections to a remote `tcp` server address. -### options - -> `object` - -`tcp`-specific options. - -```yaml -options: - host: 0.0.0.0 - port: 12345 -``` - -#### options.host - -> `string` - -Hostname or IP address. - -#### options.port - -> `integer` | `string` | `array` of `integer` | `array` of `string` - -Port number(s), including port number ranges. - -### exit - -> `string` - -Default exit binding when no conditional routes are viable, for kind `server` only. - -```yaml -exit: echo_server -``` - -### routes - -> `array` of `object` - -Conditional `tcp`-specific routes. - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -##### when[].authority - -> `string` - -Associated authority. - -##### when[].cidr - -> `string` - -CIDR mask. - -##### when[].port - -> `integer` | `string` | `array` of `integer` | `array` of `string` - -Port number(s), including port number ranges. - -#### routes[].exit\* - -> `string` - -Next binding when following this route, for kind `server` only. - -```yaml -routes: - - when: - ... - exit: echo_server +```yaml {3} + ``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/tcp/client.md b/src/reference/config/bindings/tcp/client.md index cb7bf38f..a143e83f 100644 --- a/src/reference/config/bindings/tcp/client.md +++ b/src/reference/config/bindings/tcp/client.md @@ -7,12 +7,12 @@ shortTitle: client The tcp client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md index a7910b82..8ac0dea0 100644 --- a/src/reference/config/bindings/tcp/server.md +++ b/src/reference/config/bindings/tcp/server.md @@ -7,12 +7,12 @@ shortTitle: server The tcp server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/tls/.partials/options.md b/src/reference/config/bindings/tls/.partials/options.md new file mode 100644 index 00000000..10aa3315 --- /dev/null +++ b/src/reference/config/bindings/tls/.partials/options.md @@ -0,0 +1,65 @@ +### options + +> `object` + +`tls`-specific options. + +```yaml +options: + keys: + - localhost + sni: + - localhost + alpn: + - echo +``` + +#### options.version + +> `string` + +Protocol version. + +#### options.keys + +> `array` of `string` + +A list of reference names for the Vault key. + +#### options.trust + +> `array` of `string` + +A list of reference names for the Vault certificate. + +#### options.signers + +> `array` of `string` + +A list of reference names for the Vault signer certificate. + +#### options.trustcacerts + +> `boolean` | Default: `true` when trust is `null` + +Trust CA certificates. + +#### options.sni\* + +> `array` of `string` + +A list of the Server Name Indications. + +#### options.alpn + +> `array` of `string` + +Application protocols. + +#### options.mutual + +> `enum` [ "required", "requested", "none" ] | Default: `"none"` + +Mutual authentication + + diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md new file mode 100644 index 00000000..ea3168a5 --- /dev/null +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -0,0 +1,69 @@ +### routes + +> `array` of `object` + +Conditional `tls`-specific routes. + +```yaml +routes: + - when: + - alpn: echo + exit: echo_server +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - alpn: echo +``` + +##### when[].authority + +> `string` + +Associated authority. + +##### when[].alpn + +> `string` + +Application protocol. + +##### when[].port + +> `integer` | `string` | `array` of `integer` | `array` of `string` + +Port number(s), including port number ranges. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: echo_server +``` diff --git a/src/reference/config/bindings/tls/.partials/server.yaml b/src/reference/config/bindings/tls/.partials/server.yaml index e69de29b..894620f1 100644 --- a/src/reference/config/bindings/tls/.partials/server.yaml +++ b/src/reference/config/bindings/tls/.partials/server.yaml @@ -0,0 +1,16 @@ + tls_server: + type: tls + kind: server + vault: server + exit: default_server + options: + keys: + - localhost + sni: + - localhost + alpn: + - echo + routes: + - when: + - alpn: echo + exit: echo_server diff --git a/src/reference/config/bindings/tls/README.md b/src/reference/config/bindings/tls/README.md index 5e2cafb1..da482a10 100644 --- a/src/reference/config/bindings/tls/README.md +++ b/src/reference/config/bindings/tls/README.md @@ -13,30 +13,6 @@ tag: # tls Binding -Zilla runtime tls binding. - -```yaml {2} -tls_server: - type: tls - kind: server - vault: server - options: - keys: - - localhost - sni: - - localhost - alpn: - - echo - routes: - - when: - - alpn: echo - exit: echo_server -``` - -## Configuration (\* required) - -### type: tls\* - Defines a binding with `tls` protocol support, with `server`, `client` or `proxy` behavior. ## server @@ -49,6 +25,10 @@ Certificates and keys required to complete the TLS handshake are provided by a ` Conditional routes based on `tls` hostname authority or negotiated ALPN protocol are used to route these streams to an `exit` binding. +```yaml {3} + +``` + ## client > [Full config](./client.md) @@ -59,6 +39,10 @@ Certificates and keys required to complete the TLS handshake are provided by a ` Conditional routes based on `tls` hostname authority or negotiated ALPN protocol are used to route these streams to an `exit` binding. +```yaml {3} + +``` + ## proxy > [Full config](./proxy.md) @@ -67,152 +51,6 @@ The `proxy` kind `tls` binding detects `ClientHello` `server_name` extension to A `vault` is not required to proxy TLS protocol as the handshake is only observed read-only as it routes through the `tls` `proxy` binding. -### vault - -> `string` - -Vault name. - -### options - -> `object` - -`tls`-specific options. - -```yaml -options: - keys: - - localhost - sni: - - localhost - alpn: - - echo -``` - -#### options.version - -> `string` - -Protocol version. - -#### options.keys - -> `array` of `string` - -A list of reference names for the Vault key. - -#### options.trust - -> `array` of `string` - -A list of reference names for the Vault certificate. - -#### options.signers - -> `array` of `string` - -A list of reference names for the Vault signer certificate. - -#### options.trustcacerts - -> `boolean` | Default: `true` when trust is `null` - -Trust CA certificates. - -#### options.sni\* - -> `array` of `string` - -A list of the Server Name Indications. - -#### options.alpn - -> `array` of `string` - -Application protocols. - -#### options.mutual - -> `enum` [ "required", "requested", "none" ] | Default: `"none"` - -Mutual authentication - - - -### routes - -> `array` of `object` - -Conditional `tls`-specific routes. - -```yaml -routes: - - when: - - alpn: echo - exit: echo_server -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - alpn: echo +```yaml {3} + ``` - -##### when[].authority - -> `string` - -Associated authority. - -##### when[].alpn - -> `string` - -Application protocol. - -##### when[].port - -> `integer` | `string` | `array` of `integer` | `array` of `string` - -Port number(s), including port number ranges. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: echo_server -``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/tls/client.md b/src/reference/config/bindings/tls/client.md index 0bbba9a9..18aec461 100644 --- a/src/reference/config/bindings/tls/client.md +++ b/src/reference/config/bindings/tls/client.md @@ -7,12 +7,13 @@ shortTitle: client The tls client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + + diff --git a/src/reference/config/bindings/tls/proxy.md b/src/reference/config/bindings/tls/proxy.md index d6b10777..1a90a050 100644 --- a/src/reference/config/bindings/tls/proxy.md +++ b/src/reference/config/bindings/tls/proxy.md @@ -7,12 +7,13 @@ shortTitle: proxy The tls proxy binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + + diff --git a/src/reference/config/bindings/tls/server.md b/src/reference/config/bindings/tls/server.md index 7bba1b2c..f159e371 100644 --- a/src/reference/config/bindings/tls/server.md +++ b/src/reference/config/bindings/tls/server.md @@ -7,12 +7,13 @@ shortTitle: server The tls server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + + diff --git a/src/reference/config/bindings/ws/.partials/options.md b/src/reference/config/bindings/ws/.partials/options.md new file mode 100644 index 00000000..4f746c7b --- /dev/null +++ b/src/reference/config/bindings/ws/.partials/options.md @@ -0,0 +1,37 @@ +### options + +> `object` + +`ws`-specific options. + +#### options.defaults + +> `object` + +Defaults. + +#### defaults.protocol + +> `string` + +Subprotocol. + +#### defaults.scheme + +> `string` + +Scheme. + +#### defaults.authority + +> `string` + +Authority. + +#### defaults.path + +> `string` + +Path. + + diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md new file mode 100644 index 00000000..366ff00c --- /dev/null +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -0,0 +1,75 @@ +### routes + +> `array` of `object` + +Conditional `ws`-specific routes. + +```yaml +routes: + - when: + - protocol: echo + exit: echo_server +``` + +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + +#### routes[].when + +> `array` of `object` + +List of conditions (any match) to match this route. +Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) + +```yaml +routes: + - when: + - protocol: echo +``` + +##### when[].protocol + +> `string` + +Subprotocol pattern. + +##### when[].scheme + +> `string` + +Scheme pattern. + +##### when[].authority + +> `string` + +Authority pattern. + +##### when[].path + +> `string` + +Path pattern. + +#### routes[].exit\* + +> `string` + +Next binding when following this route. + +```yaml +routes: + - when: + ... + exit: echo_server +``` diff --git a/src/reference/config/bindings/ws/.partials/server.yaml b/src/reference/config/bindings/ws/.partials/server.yaml index e69de29b..b0152ebb 100644 --- a/src/reference/config/bindings/ws/.partials/server.yaml +++ b/src/reference/config/bindings/ws/.partials/server.yaml @@ -0,0 +1,8 @@ + ws_server: + type: ws + kind: server + exit: default_server + routes: + - when: + - protocol: echo + exit: echo_server diff --git a/src/reference/config/bindings/ws/README.md b/src/reference/config/bindings/ws/README.md index 8c64f52e..3d723a3a 100644 --- a/src/reference/config/bindings/ws/README.md +++ b/src/reference/config/bindings/ws/README.md @@ -13,22 +13,6 @@ tag: # ws Binding -Zilla runtime ws binding. - -```yaml {2} -ws_server: - type: ws - kind: server - routes: - - when: - - protocol: echo - exit: echo_server -``` - -## Configuration (\* required) - -### type: ws\* - Defines a binding with WebSockets protocol support, with `server` or `client` behavior. ## server @@ -39,6 +23,10 @@ The `server` kind `ws` binding converts inbound `http` request-response streams Conditional routes based on `ws` scheme, authority, path or negotiated subprotocol are used to route these streams to an `exit` binding. +```yaml {3} + +``` + ## client > [Full config](./client.md) @@ -47,124 +35,6 @@ The `client` kind `ws` binding converts inbound `ws` full duplex streams into `h Conditional routes based on `ws` scheme, authority, path or negotiated subprotocol are used to route these streams to an `exit` binding. -### options - -> `object` - -`ws`-specific options. - -#### options.defaults - -> `object` - -Defaults. - -#### defaults.protocol - -> `string` - -Subprotocol. - -#### defaults.scheme - -> `string` - -Scheme. - -#### defaults.authority - -> `string` - -Authority. - -#### defaults.path - -> `string` - -Path. - - - -### routes - -> `array` of `object` - -Conditional `ws`-specific routes. - -```yaml -routes: - - when: - - protocol: echo - exit: echo_server -``` - -#### routes[].guarded - -> `object` as named map of `string:string` `array` - -List of roles required by each named guard to authorize this route. - -```yaml -routes: - - guarded: - my_guard: - - read:items -``` - -#### routes[].when - -> `array` of `object` - -List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) - -```yaml -routes: - - when: - - protocol: echo -``` - -##### when[].protocol - -> `string` - -Subprotocol pattern. - -##### when[].scheme - -> `string` - -Scheme pattern. - -##### when[].authority - -> `string` - -Authority pattern. - -##### when[].path - -> `string` - -Path pattern. - -#### routes[].exit\* - -> `string` - -Next binding when following this route. - -```yaml -routes: - - when: - ... - exit: echo_server +```yaml {3} + ``` - - - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/ws/client.md b/src/reference/config/bindings/ws/client.md index 38f3fdc6..005b7456 100644 --- a/src/reference/config/bindings/ws/client.md +++ b/src/reference/config/bindings/ws/client.md @@ -7,12 +7,12 @@ shortTitle: client The ws client binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + diff --git a/src/reference/config/bindings/ws/server.md b/src/reference/config/bindings/ws/server.md index 32aebc6d..539235b6 100644 --- a/src/reference/config/bindings/ws/server.md +++ b/src/reference/config/bindings/ws/server.md @@ -7,12 +7,12 @@ shortTitle: server The ws server binding ```yaml {3} - + ``` ## Configuration (\* required) - - + + From c63e7951dbd907ccdcdd435332be79b85436606e Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 23 Aug 2024 10:38:25 -0400 Subject: [PATCH 14/54] get all bindings correctly parsed --- .check-schema/index.js | 87 +++++---- .check-schema/zilla-schema.json | 52 +++--- cspell.json | 1 + src/.vuepress/config.ts | 2 +- src/.vuepress/theme.ts | 2 +- .../config/bindings/.partials/catalog.md | 17 ++ .../bindings/.partials/options-http-auth.md | 24 +++ .../bindings/.partials/options-kafka-sasl.md | 77 ++++++++ .../.partials/options-kafka-topics.md | 29 +++ .../bindings/.partials/options-mqtt-auth.md | 23 +++ .../config/bindings/.partials/options-tcp.md | 11 ++ .../config/bindings/.partials/options-tls.md | 47 +++++ .../config/bindings/amqp/.partials/routes.md | 4 +- .../bindings/asyncapi/.partials/options.md | 63 +++---- .../bindings/asyncapi/.partials/routes.md | 33 ++-- .../config/bindings/asyncapi/client.md | 135 +++++++++++++- .../config/bindings/asyncapi/proxy.md | 146 +++++++++++++++ .../config/bindings/asyncapi/server.md | 103 ++++++++++- src/reference/config/bindings/echo/server.md | 1 - .../bindings/grpc-kafka/.partials/options.md | 16 +- .../bindings/grpc-kafka/.partials/routes.md | 24 +-- .../config/bindings/grpc-kafka/proxy.md | 1 - .../config/bindings/grpc/.partials/options.md | 3 +- .../config/bindings/grpc/.partials/routes.md | 6 +- src/reference/config/bindings/grpc/server.md | 8 +- .../http-filesystem/.partials/routes.md | 4 +- .../bindings/http-kafka/.partials/options.md | 8 +- .../bindings/http-kafka/.partials/routes.md | 34 ++-- .../config/bindings/http-kafka/proxy.md | 1 - .../config/bindings/http/.partials/options.md | 174 ++---------------- .../config/bindings/http/.partials/routes.md | 2 +- src/reference/config/bindings/http/client.md | 13 ++ src/reference/config/bindings/http/server.md | 123 +++++++++++++ .../bindings/kafka-grpc/.partials/options.md | 12 +- .../bindings/kafka-grpc/.partials/routes.md | 14 +- .../bindings/kafka-grpc/remote_server.md | 1 - .../config/bindings/kafka-proxy/proxy.md | 12 +- .../bindings/kafka/.partials/client.yaml | 8 +- .../bindings/kafka/.partials/options.md | 82 --------- .../config/bindings/kafka/.partials/routes.md | 2 +- .../config/bindings/kafka/cache_client.md | 21 ++- .../config/bindings/kafka/cache_server.md | 37 +++- src/reference/config/bindings/kafka/client.md | 31 +++- .../bindings/mqtt-kafka/.partials/options.md | 8 +- .../bindings/mqtt-kafka/.partials/routes.md | 10 +- .../config/bindings/mqtt/.partials/options.md | 93 ---------- .../config/bindings/mqtt/.partials/routes.md | 12 +- src/reference/config/bindings/mqtt/client.md | 35 ++++ src/reference/config/bindings/mqtt/server.md | 81 ++++++++ .../openapi-asyncapi/.partials/options.md | 4 +- .../openapi-asyncapi/.partials/routes.md | 21 ++- .../bindings/openapi/.partials/options.md | 34 ++-- .../config/bindings/openapi/client.md | 2 +- .../config/bindings/openapi/server.md | 1 + .../config/bindings/proxy/.partials/routes.md | 61 +++++- .../bindings/sse-kafka/.partials/routes.md | 14 +- .../config/bindings/sse/.partials/options.md | 12 +- .../config/bindings/sse/.partials/routes.md | 2 +- .../config/bindings/tcp/.partials/routes.md | 25 +-- src/reference/config/bindings/tcp/client.md | 9 +- src/reference/config/bindings/tcp/server.md | 21 +++ .../config/bindings/tls/.partials/options.md | 2 - .../config/bindings/tls/.partials/routes.md | 6 +- src/reference/config/bindings/tls/proxy.md | 1 - .../config/bindings/ws/.partials/options.md | 2 - .../config/bindings/ws/.partials/routes.md | 8 +- src/reference/config/bindings/ws/server.md | 1 - .../config/catalogs/catalog-filesystem.md | 2 +- .../config/catalogs/catalog-inline.md | 4 +- .../config/models/.partials/cataloged.md | 46 +++++ src/reference/config/models/model-avro.md | 38 +--- src/reference/config/models/model-json.md | 38 +--- .../exporters/exporter-aws-cloudwatch.md | 8 +- .../telemetry/exporters/exporter-otlp.md | 4 +- .../exporters/exporter-prometheus.md | 6 +- .../config/vaults/vault-filesystem.md | 18 +- src/reference/manager/overview.md | 6 +- 77 files changed, 1395 insertions(+), 734 deletions(-) create mode 100644 src/reference/config/bindings/.partials/catalog.md create mode 100644 src/reference/config/bindings/.partials/options-http-auth.md create mode 100644 src/reference/config/bindings/.partials/options-kafka-sasl.md create mode 100644 src/reference/config/bindings/.partials/options-kafka-topics.md create mode 100644 src/reference/config/bindings/.partials/options-mqtt-auth.md create mode 100644 src/reference/config/bindings/.partials/options-tcp.md create mode 100644 src/reference/config/bindings/.partials/options-tls.md delete mode 100644 src/reference/config/bindings/kafka/.partials/options.md create mode 100644 src/reference/config/models/.partials/cataloged.md diff --git a/.check-schema/index.js b/.check-schema/index.js index 15508be3..b0256c84 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -40,10 +40,11 @@ const main = async () => { if (!i || !!i.deprecated) return //recurse - if (i.properties) { + if (i.properties && Object.keys(i.properties).length) { + // console.log(k, Object.keys(i.properties).length) props.push(...getObjProps(k, i.properties, i.required)); } - if (i.items?.properties) { + if (i.items?.properties && Object.keys(i.items?.properties).length) { props.push( ...getObjProps(`${k}[]`, i.items.properties, i.items.required) ); @@ -80,7 +81,7 @@ const main = async () => { } var req = !!reqKeys?.includes(k); var path = [attr, k].filter((s) => !!s).join("."); - if (i.properties) { + if (i.properties && Object.keys(i.properties).length) { props.push([path, "object", req, i.const]); } else if (i.additionalProperties) { if (i.additionalProperties.oneOf) { @@ -120,33 +121,34 @@ const main = async () => { } var sections = []; - var sections = Object.entries({ - guard: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], - vault: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], - catalog: schema.properties.catalogs.patternProperties[Object.keys(schema.properties.catalogs.patternProperties)[0]], - }).map(([section, props]) => - props?.allOf?.map(({ if: fi, then }) => ({ - folder: `${section}s`, - name: fi.properties.type.const || fi.properties.type.enum?.[0], - props: { - ...schema.$defs[section].properties, - ...(props?.properties || {}), - ...(then.properties || {}), - options: { - ...(schema.$defs.options[section]?.[(fi.properties.type.const || fi.properties.type.enum?.[0])] || {}), - ...(schema.$defs[section].properties?.options || {}), - ...(props?.properties?.options || {}), - ...(then.properties?.options || {}), - }, - required: [...(props?.required || []), ...(then.required || [])], - anyOf: [...(then.anyOf || [])], - }, - })) - ).flat(1); + // var sections = Object.entries({ + // guard: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], + // vault: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], + // catalog: schema.properties.catalogs.patternProperties[Object.keys(schema.properties.catalogs.patternProperties)[0]], + // }).map(([section, props]) => + // props?.allOf?.map(({ if: fi, then }) => ({ + // folder: `${section}s`, + // name: fi.properties.type.const || fi.properties.type.enum?.[0], + // props: { + // ...schema.$defs[section].properties, + // ...(props?.properties || {}), + // ...(then.properties || {}), + // options: { + // ...(schema.$defs.options[section]?.[(fi.properties.type.const || fi.properties.type.enum?.[0])] || {}), + // ...(schema.$defs[section].properties?.options || {}), + // ...(props?.properties?.options || {}), + // ...(then.properties?.options || {}), + // }, + // required: [...(props?.required || []), ...(then.required || [])], + // anyOf: [...(then.anyOf || [])], + // }, + // })) + // ).flat(1); var bindings = schema.properties.bindings.patternProperties[Object.keys(schema.properties.bindings.patternProperties)[0]]; bindings.allOf?.forEach(({ if: fi, then }) => { var folder = `bindings.${fi.properties.type.const}`; + // if (folder == "bindings.grpc") console.log(folder, JSON.stringify({ if: fi, then }, null, 4)) if (then.oneOf) { sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf }) => ({ folder, @@ -155,11 +157,13 @@ const main = async () => { ...bindings.properties, ...(then.properties || {}), ...(properties || {}), - options: { - ...(then.properties?.options || {}), - ...(properties?.options || {}), - }, - routes: { + options: (then.properties?.options != false ? { + properties: { + ...(then.properties?.options?.properties || {}), + ...(properties?.options?.properties || {}), + } + } : {}), + routes: (then.properties?.routes != false ? { items: { properties: { ...(bindings.properties?.routes?.items?.properties || {}), @@ -167,7 +171,7 @@ const main = async () => { ...(properties?.routes?.items?.properties || {}), } } - }, + } : {}), required: [...(then.required || []), ...(required || [])], oneOf, anyOf: [...(then.anyOf || []), ...(anyOf || [])], @@ -180,14 +184,14 @@ const main = async () => { props: { ...bindings.properties, ...(then.properties || {}), - routes: { + routes: (then.properties?.routes != false ? { items: { properties: { ...(bindings.properties?.routes?.items?.properties || {}), ...(then.properties?.routes?.items?.properties || {}), } } - }, + } : {}), required: [...(then.required || [])], } }); @@ -204,7 +208,7 @@ const main = async () => { props: then, })) ); - // console.log("sections", sections); + // var modelProps = schema.properties.converter.properties.exporters.patternProperties[Object.keys(schema.properties.telemetry.properties.exporters.patternProperties)[0]] // sections.push( // ...schema.$defs.converter.model?.allOf.map(({ if: fi, then }) => ({ // type: "model", @@ -243,14 +247,19 @@ const main = async () => { // console.log("findings", folder, name, schemaProps, pageHeaders); // print diff check - console.log(folder, name, "add", schemaProps.filter((x) => + var addDiff = schemaProps.filter((x) => !pageHeaders.includes(x) - )); - console.log(folder, name, "remove", pageHeaders.filter((x) => + ) + if (addDiff.length >= 0) console.log(folder, name, "add", addDiff); + var removeDiff = pageHeaders.filter((x) => !schemaProps.includes(x) - )); + ) + if (removeDiff.length >= 0) console.log(folder, name, "remove", removeDiff); + + if (addDiff.length + removeDiff.length) process.exitCode = 1; } else { errors.push(`missing ${name}`); + process.exitCode = 1; } }); diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 5b99b911..cf46a1f0 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -1735,7 +1735,36 @@ } }, "additionalProperties": false - } + }, + "catalog": + { + "type": "object", + "patternProperties": + { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": + { + "type": "object", + "properties": + { + "subject": + { + "type": "string" + }, + "version": + { + "type": "string", + "default": "latest" + } + }, + "required": + [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } } }, { @@ -3277,18 +3306,6 @@ "required": [ "exit" ] - }, - { - "properties": { - "routes": { - "required": [ - "exit" - ] - } - }, - "required": [ - "routes" - ] } ] }, @@ -3297,13 +3314,6 @@ "kind": { "const": "client" }, - "routes": { - "items": { - "properties": { - "exit": false - } - } - }, "exit": false } } @@ -4498,7 +4508,7 @@ "model": { "const": "protobuf" }, - "view": { + "viewview": { "type": "string", "enum": [ "json" diff --git a/cspell.json b/cspell.json index a3a18a6c..931edb3e 100644 --- a/cspell.json +++ b/cspell.json @@ -44,6 +44,7 @@ "keytool", "lycheeverse", "mosquitto", + "mqtt", "mvnw", "netcat", "OAUTHBEARER", diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts index 44cd126d..a8471902 100644 --- a/src/.vuepress/config.ts +++ b/src/.vuepress/config.ts @@ -58,7 +58,7 @@ export default defineUserConfig({ ], markdown: { headers: { - level: [2, 3, 4, 5, 6], + level: [2, 3], }, }, }); diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts index 78189de0..3a18b468 100644 --- a/src/.vuepress/theme.ts +++ b/src/.vuepress/theme.ts @@ -41,7 +41,7 @@ export default hopeTheme({ "/": { navbar: enNavbar, sidebar: enSidebar, - headerDepth: 4, + headerDepth: 3, displayFooter: true, footer: ` `, diff --git a/src/reference/config/bindings/.partials/catalog.md b/src/reference/config/bindings/.partials/catalog.md new file mode 100644 index 00000000..74d1ca56 --- /dev/null +++ b/src/reference/config/bindings/.partials/catalog.md @@ -0,0 +1,17 @@ +### catalog + +> `object` + +To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. + +#### catalog.subject + +> `string` + +Unique identifier for schema categorization in the catalog. + +#### catalog.version + +> `string` | Default: `"latest"` + +Specific iteration or version of a registered schema in the defined catalog. diff --git a/src/reference/config/bindings/.partials/options-http-auth.md b/src/reference/config/bindings/.partials/options-http-auth.md new file mode 100644 index 00000000..d90ed5cb --- /dev/null +++ b/src/reference/config/bindings/.partials/options-http-auth.md @@ -0,0 +1,24 @@ +#### authorization.credentials + +> `object` + +Defines how to extract credentials from the HTTP request. + +#### credentials.cookies + +> `map` of `name: value` properties + +Named cookie value pattern with `{credentials}`. + +#### credentials.headers + +> `map` of `name: value` properties + +Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. + +#### credentials.query + +> `map` of `name: value` properties + +Named query parameter value pattern with `{credentials}`. + diff --git a/src/reference/config/bindings/.partials/options-kafka-sasl.md b/src/reference/config/bindings/.partials/options-kafka-sasl.md new file mode 100644 index 00000000..72f4b27b --- /dev/null +++ b/src/reference/config/bindings/.partials/options-kafka-sasl.md @@ -0,0 +1,77 @@ +#### sasl.mechanism + +> `enum` [ "plain", "scram-sha-1", "scram-sha-256", "scram-sha-512" ] + +Supports `plain` and `scram` mechanisms. + +#### sasl.mechanism: plain + +> `string` + +Configure credentials for the `plain` sasl mechanism. + +##### sasl.username\* + +> `string` + +SASL username. + +##### sasl.password\* + +> `string` + +SASL password. + +#### sasl.mechanism: scram-sha-1 + +> `string` + +Configure credentials for the `scram-sha-1` sasl mechanism. + +##### sasl.username\* + +> `string` + +SASL username. + +##### sasl.password\* + +> `string` + +SASL password. + +#### sasl.mechanism: scram-sha-256 + +> `string` + +Configure credentials for the `scram-sha-256` sasl mechanism. + +##### sasl.username\* + +> `string` + +SASL username. + +##### sasl.password\* + +> `string` + +SASL password. + +#### sasl.mechanism: scram-sha-512 + +> `string` + +Configure credentials for the `scram-sha-512` sasl mechanism. + +##### sasl.username\* + +> `string` + +SASL username. + +##### sasl.password\* + +> `string` + +SASL password. diff --git a/src/reference/config/bindings/.partials/options-kafka-topics.md b/src/reference/config/bindings/.partials/options-kafka-topics.md new file mode 100644 index 00000000..57b8f3c4 --- /dev/null +++ b/src/reference/config/bindings/.partials/options-kafka-topics.md @@ -0,0 +1,29 @@ +#### topics[].name\* + +> `string` + +Topic name. + +#### topics[].key + +> `object` + +Enforce validation for key + +#### key.model + +> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] + +A schema or type to validate the topic's key. + +#### topics[].value + +> `object` + +Enforce validation for value + +#### value.model + +> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] + +A schema or type to validate the topic's value. diff --git a/src/reference/config/bindings/.partials/options-mqtt-auth.md b/src/reference/config/bindings/.partials/options-mqtt-auth.md new file mode 100644 index 00000000..34f41e6e --- /dev/null +++ b/src/reference/config/bindings/.partials/options-mqtt-auth.md @@ -0,0 +1,23 @@ +#### authorization.credentials + +> `object` + +Defines how to extract credentials from the MQTT connect packet. + +#### credentials.connect + +> `object` + +MQTT connect packet properties + +#### connect.username + +> `string` + +Extract credentials from the MQTT connect packet username property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. + +#### connect.password + +> `string` + +Extract credentials from the MQTT connect packet password property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. diff --git a/src/reference/config/bindings/.partials/options-tcp.md b/src/reference/config/bindings/.partials/options-tcp.md new file mode 100644 index 00000000..60ddf638 --- /dev/null +++ b/src/reference/config/bindings/.partials/options-tcp.md @@ -0,0 +1,11 @@ +#### tcp.host + +> `string` + +Hostname or IP address. + +#### tcp.port + +> `integer` | `string` | `array` of `integer` | `array` of `string` + +Port number(s), including port number ranges. diff --git a/src/reference/config/bindings/.partials/options-tls.md b/src/reference/config/bindings/.partials/options-tls.md new file mode 100644 index 00000000..fd349c06 --- /dev/null +++ b/src/reference/config/bindings/.partials/options-tls.md @@ -0,0 +1,47 @@ +#### tls.version + +> `string` + +Protocol version. + +#### tls.keys + +> `array` of `string` + +A list of reference names for the Vault key. + +#### tls.trust + +> `array` of `string` + +A list of reference names for the Vault certificate. + +#### tls.signers + +> `array` of `string` + +A list of reference names for the Vault signer certificate. + +#### tls.trustcacerts + +> `boolean` | Default: `true` when trust is `null` + +Trust CA certificates. + +#### tls.sni\* + +> `array` of `string` + +A list of the Server Name Indications. + +#### tls.alpn + +> `array` of `string` + +Application protocols. + +#### tls.mutual + +> `enum` [ "required", "requested", "none" ] | Default: `"none"` + +Mutual authentication. diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md index 87f4469e..bd82ba39 100644 --- a/src/reference/config/bindings/amqp/.partials/routes.md +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -39,13 +39,13 @@ routes: capabilities: send_and_receive ``` -##### when[].address +#### when[].address > `string` Link address. -##### when[].capabilities +#### when[].capabilities > `enum` [ "send_only", "receive_only", "send_and_receive" ] | Default: `"send_and_receive"` diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index 08a94609..e19d8051 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -1,61 +1,44 @@ -### options - -> `object` - -`asyncapi`-specific options. - -```yaml -specs: - http_api: - servers: - - name: plain - catalog: - my_catalog: - subject: petstore - version: latest -``` - #### options.specs > `object` as map of named properties specs specific options -##### specs.catalog +#### specs.catalog > `object` as map of named properties catalog specific options. -###### catalog.subject +#### catalog.subject > `string` Subject name used when storing the catalog artifact. -###### catalog.version +#### catalog.version > `string` Catalog artifact version to use. -##### specs.servers +#### specs.servers -> `object` +> `array` of `object` -###### servers.url +#### servers[].url > `string` The server to match based on the server's `url` in an asyncapi `2.x` spec only. -###### servers.host +#### servers[].host > `string` The server to match based on the server's `host` in an asyncapi `3.x` spec only. -###### servers.pathname +#### servers[].pathname > `string` @@ -67,13 +50,13 @@ The server pathname to match based on the server's `pathname` in an asyncapi `3. `client` specific `tcp` options. -##### tcp.host +#### tcp.host > `string` Hostname or IP address. -##### tcp.port +#### tcp.port > `integer` | `string` | `array` of `integer` | `array` of `string` @@ -85,7 +68,7 @@ Port number(s), including port number ranges. http specific options. -##### http.authorization +#### http.authorization > `object` as map of named properties @@ -99,25 +82,25 @@ authorization: authorization: Bearer {credentials} ``` -##### authorization.credentials +#### authorization.credentials > `object` Defines how to extract credentials from the HTTP request. -##### credentials.cookies +#### credentials.cookies > `map` of `name: value` properties Named cookie value pattern with `{credentials}`. -##### credentials.headers +#### credentials.headers > `map` of `name: value` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. -##### credentials.query +#### credentials.query > `map` of `name: value` properties @@ -129,49 +112,49 @@ Named query parameter value pattern with `{credentials}`. `tls` specific options. -##### tls.version +#### tls.version > `string` Protocol version. -##### tls.keys +#### tls.keys > `array` of `string` A list of reference names for the Vault key. -##### tls.trust +#### tls.trust > `array` of `string` A list of reference names for the Vault certificate. -##### tls.signers +#### tls.signers > `array` of `string` A list of reference names for the Vault signer certificate. -##### tls.trustcacerts +#### tls.trustcacerts > `boolean` | Default: `true` when trust is `null` Trust CA certificates. -##### tls.sni\* +#### tls.sni\* > `array` of `string` A list of the Server Name Indications. -##### tls.alpn +#### tls.alpn > `array` of `string` Application protocols. -##### tls.mutual +#### tls.mutual > `enum` [ "required", "requested", "none" ] | Default: `"none"` diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md index 07fa4498..d53d7e38 100644 --- a/src/reference/config/bindings/asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -22,6 +22,19 @@ Conditional `asyncapi`-specific routes for adapting streams. operation-id: onSensorData ``` +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + #### routes[].when > `array` of `object` @@ -29,30 +42,18 @@ Conditional `asyncapi`-specific routes for adapting streams. List of conditions to match this route when adapting `asyncapi` MQTT streams to `asyncapi` Kafka streams. Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) -##### when[].api-id +#### when[].api-id > `string` AsyncAPI spec identifier that matches from `asyncapi` binding MQTT stream. -##### when[].operation-id +#### when[].operation-id > `string` AsyncAPI OperationId that can be mapped between AsyncAPI MQTT and AsyncAPI Kafka spec -#### routes[].exit\* - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -routes: - - when: - ... - exit: asyncapi_client -``` #### routes[].with @@ -65,13 +66,13 @@ with: api-id: my-asyncapi-spec ``` -##### with.api-id +#### with.api-id > `string` AsyncAPI spec identifier that the route exits with to the next binding -##### with.operation-id +#### with.operation-id > `string` diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 6eccf925..065c13c5 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -12,7 +12,140 @@ The asyncapi client binding creates composite of `kafka` or `mqtt` or `http`, an ## Configuration (\* required) + + +### options + +> `object` + +`client`-specific options. + +```yaml +specs: + http_api: + servers: + - name: plain + catalog: + my_catalog: + subject: petstore + version: latest +``` + + +### options.kafka + +> `object` + +`kafka` binding specific options. + +#### kafka.topics + +> `array` of `object` + +Topic configuration. + + + +#### topics[].defaultOffset + +> `enum` [ "live", "historical" ] | Default: `"historical"` + +Fetch offset to use for new consumers + +#### kafka.sasl + +> `object` + +SASL credentials to use when connecting to `kafka` brokers. + + + +### options.mqtt-kafka + +> `object` + +`mqtt-kafka` binding specific options. + +#### mqtt-kafka.channels + +> `object` + +AsyncAPI Kafka channels describing the necessary topics for the MQTT-Kafka mapping. + +```yaml +mqtt-kafka: + channels: + sessions: mqttSessions + retained: mqttRetained + messages: mqttMessages +``` + +#### channels.sessions + +> `string` + +AsyncAPI Kafka sessions channel. + +```yaml +sessions: mqttSessions +``` + +#### channels.retained + +> `string` + +AsyncAPI Kafka retained channel. + +```yaml +retained: mqttRetained +``` + +#### channels.messages + +> `string` + +AsyncAPI Kafka messages channel. + +```yaml +messages: mqttMessages +``` + +### options.http + +#### http.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + + + +### options.mqtt + +#### mqtt.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + + + - diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index b0b9663f..ed6b5d03 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -12,7 +12,153 @@ The asyncapi proxy binding creates composite of `mqtt-kafka` binding with proxy ## Configuration (\* required) + + +### options + +> `object` + +`proxy`-specific options. + +```yaml +specs: + http_api: + servers: + - name: plain + catalog: + my_catalog: + subject: petstore + version: latest +``` + + +### options.kafka + +> `object` + +`kafka` binding specific options. + +#### kafka.topics + +> `array` of `object` + +Topic configuration. + + + +#### topics[].defaultOffset + +> `enum` [ "live", "historical" ] | Default: `"historical"` + +Fetch offset to use for new consumers + +#### kafka.sasl + +> `object` + +SASL credentials to use when connecting to `kafka` brokers. + + + +### options.mqtt-kafka + +> `object` + +`mqtt-kafka` binding specific options. + +#### mqtt-kafka.channels + +> `object` + +AsyncAPI Kafka channels describing the necessary topics for the MQTT-Kafka mapping. + +```yaml +mqtt-kafka: + channels: + sessions: mqttSessions + retained: mqttRetained + messages: mqttMessages +``` + +#### channels.sessions + +> `string` + +AsyncAPI Kafka sessions channel. + +```yaml +sessions: mqttSessions +``` + +#### channels.retained + +> `string` + +AsyncAPI Kafka retained channel. + +```yaml +retained: mqttRetained +``` + +#### channels.messages + +> `string` + +AsyncAPI Kafka messages channel. + +```yaml +messages: mqttMessages +``` + +### options.http + +#### http.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + + + +### options.mqtt + +#### mqtt.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + + + +#### routes[].exit\* + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +routes: + - when: + ... + exit: asyncapi_client +``` diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index ed6b6206..218a58a6 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -12,9 +12,56 @@ The asyncapi server binding creates composite of `tcp`, `tls`, and `mqtt` or `ht ## Configuration (\* required) + + +### options + +> `object` + +`server`-specific options. + +```yaml +specs: + http_api: + servers: + - name: plain + catalog: + my_catalog: + subject: petstore + version: latest +``` + -### mqtt-kafka +### options.kafka + +> `object` + +`kafka` binding specific options. + +#### kafka.topics + +> `array` of `object` + +Topic configuration. + + + +#### topics[].defaultOffset + +> `enum` [ "live", "historical" ] | Default: `"historical"` + +Fetch offset to use for new consumers + +#### kafka.sasl + +> `object` + +SASL credentials to use when connecting to `kafka` brokers. + + + +### options.mqtt-kafka > `object` @@ -34,7 +81,7 @@ mqtt-kafka: messages: mqttMessages ``` -##### channels.sessions +#### channels.sessions > `string` @@ -44,7 +91,7 @@ AsyncAPI Kafka sessions channel. sessions: mqttSessions ``` -##### channels.retained +#### channels.retained > `string` @@ -54,7 +101,7 @@ AsyncAPI Kafka retained channel. retained: mqttRetained ``` -##### channels.messages +#### channels.messages > `string` @@ -64,6 +111,54 @@ AsyncAPI Kafka messages channel. messages: mqttMessages ``` +### options.http + +#### http.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + + + +### options.mqtt + +#### mqtt.authorization + +> `object` as map of named properties + +Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + + + +#### routes[].exit\* + +> `string` + +Default exit binding when no conditional routes are viable. + +```yaml +routes: + - when: + ... + exit: asyncapi_client +``` diff --git a/src/reference/config/bindings/echo/server.md b/src/reference/config/bindings/echo/server.md index de9ead62..3b06980e 100644 --- a/src/reference/config/bindings/echo/server.md +++ b/src/reference/config/bindings/echo/server.md @@ -12,5 +12,4 @@ The echo server binding supports the `echo` protocol and is run with the `server ## Configuration (\* required) - diff --git a/src/reference/config/bindings/grpc-kafka/.partials/options.md b/src/reference/config/bindings/grpc-kafka/.partials/options.md index aa48a213..60d64097 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/options.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/options.md @@ -25,7 +25,7 @@ options: Metadata header used to specify the idempotency key when adapting `grpc` request-response streams to `kafka` topic streams. -##### idempotency.metadata +#### idempotency.metadata > `string` | Default: `"idempotency-key"` @@ -37,13 +37,13 @@ The `grpc` metadata header name for idempotency key. Properties used when handling stream recovery. -##### reliability.field +#### reliability.field > `integer` | Default: `32767` The `grpc` unknown field number to send the `message-id`. -##### reliability.metadata +#### reliability.metadata > `string` | Default: `"last-message-id"` @@ -55,31 +55,31 @@ The `grpc` metadata header name for the last `message-id` seen when resuming a s Kafka request message headers injected when adapting `grpc` request-response streams to `kafka` topic streams. -##### correlation.headers +#### correlation.headers > `map` of `name: value` properties Kafka request message reply to and correlation id header names injected when adapting `grpc` request-response streams to `kafka` topic streams. -##### headers.service +#### headers.service > `string` | Default: `"zilla:service"` Kafka header name for `grpc` service. -##### headers.method +#### headers.method > `string` | Default: `"zilla:method"` Kafka header name for `grpc` method. -##### headers.correlation-id +#### headers.correlation-id > `string` | Default: `"zilla:correlation-id"` Kafka header name for request-response correlation identifier. -##### headers.reply-to +#### headers.reply-to > `string` | Default: `"zilla:reply-to"` diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index a4b52a64..0b8431e8 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -73,13 +73,13 @@ routes: base64: Y3VzdG9tIHZhbHVl ``` -##### when[].method +#### when[].method > `string` Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. -##### when[].metadata +#### when[].metadata > `map` of `name: value` properties @@ -87,7 +87,7 @@ Metadata header name value pairs (all match). Each metadata header value can be `string` or `object` with `base64` property. -##### metadata.base64 +#### metadata.base64 > `string` @@ -146,25 +146,25 @@ with: custom-text: custom-value ``` -##### with.topic +#### with.topic > `string` The name of a Kafka topic. -##### with.filters +#### with.filters > `array` of `object` List of criteria (any match) to this filter. Kafka filters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. All specified headers and key must match for the combined criteria to match. -##### filters[].key +#### filters[].key > `string` The filter criteria for the Kafka message key. -##### filters[].headers +#### filters[].headers > `map` of `name: value` properties @@ -191,31 +191,31 @@ with: reply-to: responses ``` -##### with.topic +#### with.topic > `string` The name of a Kafka topic for requests. -##### with.acks +#### with.acks > `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` Kafka acknowledgment mode -##### with.key +#### with.key > `string` The Kafka message key to include with each message. -##### with.overrides +#### with.overrides > `map` of `name: value` properties The Kafka message headers to inject with each message. -##### with.reply-to +#### with.reply-to > `string` diff --git a/src/reference/config/bindings/grpc-kafka/proxy.md b/src/reference/config/bindings/grpc-kafka/proxy.md index 41f1811f..4f0f50e3 100644 --- a/src/reference/config/bindings/grpc-kafka/proxy.md +++ b/src/reference/config/bindings/grpc-kafka/proxy.md @@ -13,6 +13,5 @@ The grpc-kafka proxy binding adapts `grpc` request-response streams to `kafka` t ## Configuration (\* required) - diff --git a/src/reference/config/bindings/grpc/.partials/options.md b/src/reference/config/bindings/grpc/.partials/options.md index 16f3b9a3..290a5daf 100644 --- a/src/reference/config/bindings/grpc/.partials/options.md +++ b/src/reference/config/bindings/grpc/.partials/options.md @@ -3,7 +3,8 @@ > `object` `grpc`-specific options. -```yaml {2} + +```yaml grpc_client: type: grpc kind: client diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index 587b53a0..dcb2ddc0 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -49,13 +49,13 @@ routes: base64: Y3VzdG9tIHZhbHVl ``` -##### when[].method +#### when[].method > `string` gRPC service method name, such as `example.EchoService/EchoUnary`, or service method pattern such as `example.EchoService/*`. -##### when[].metadata +#### when[].metadata > `map` of `name: value` properties @@ -63,7 +63,7 @@ Metadata header name value pairs (all match). Each metadata header value can be `string` or `object` with `base64` property. -##### metadata.base64 +#### metadata.base64 > `string` diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 46f72c97..c4f86fa1 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -17,14 +17,8 @@ The grpc server binding adapts `http` request-response streams to `grpc` request ## Configuration (\* required) - + - ---- - -::: right -\* required -::: diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md index 1e556f9c..7e30179e 100644 --- a/src/reference/config/bindings/http-filesystem/.partials/routes.md +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -39,7 +39,7 @@ routes: - path: /{path} ``` -##### when[].path\* +#### when[].path\* > `string` @@ -64,7 +64,7 @@ routes: Filesystem parameters used when adapting `http` data streams into `filesystem` data streams. -##### with.path\* +#### with.path\* > `string` diff --git a/src/reference/config/bindings/http-kafka/.partials/options.md b/src/reference/config/bindings/http-kafka/.partials/options.md index c50e1084..4c8c2b6b 100644 --- a/src/reference/config/bindings/http-kafka/.partials/options.md +++ b/src/reference/config/bindings/http-kafka/.partials/options.md @@ -20,7 +20,7 @@ options: HTTP request header used to specify the idempotency key when adapting `http` request-response streams to `kafka` topic streams. -##### idempotency.header +#### idempotency.header > `string` | Default: `"idempotency-key"` @@ -32,19 +32,19 @@ HTTP request header name for idempotency key. Kafka request message headers injected when adapting `http` request-response streams to `kafka` topic streams. -##### correlation.headers +#### correlation.headers > `map` of `name: value` properties Kafka request message reply to and correlation id header names injected when adapting `http` request-response streams to `kafka` topic streams. -##### headers.reply-to +#### headers.reply-to > `string` | Default: `"zilla:reply-to"` Kafka header name for reply-to topic. -##### headers.correlation-id +#### headers.correlation-id > `string` | Default: `"zilla:correlation-id"` diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index 79f57699..3f6e34a5 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -90,13 +90,13 @@ routes: path: /items/{id};cid={correlationId} ``` -##### when[].method +#### when[].method > `string` HTTP Method, such as `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `CONNECT`, `OPTIONS`, `TRACE`, `PATCH`. -##### when[].path +#### when[].path > `string` @@ -158,43 +158,43 @@ with: path: /- ``` -##### with.topic +#### with.topic > `string` Topic name, optionally referencing path parameter such as `${params.topic}`. -##### with.filters +#### with.filters > `array` of `object` List of criteria (any match) to this filter. Kafka filters for matched route when adapting `http` request-response streams to `kafka` topic fetch streams. All specified headers and key must match for the combined criteria to match. -##### filters[].key +#### filters[].key > `string` Message key, optionally referencing path parameter such as `${params.key}`. -##### filters[].headers +#### filters[].headers > `map` of `name: value` properties Message headers, with value optionally referencing path parameter such as `${params.headerX}`. -##### with.merge +#### with.merge > `object` Merge multiple Kafka messages into a unified HTTP response. Kafka merge configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. -##### merge.content-type: application/json +#### merge.content-type: application/json > `const` Content type of merged HTTP response. -##### merge.patch +#### merge.patch > `object` @@ -204,13 +204,13 @@ Describes how to patch initial HTTP response to include one or more Kafka messag Kafka merge patch configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. -##### patch.initial: [] +#### patch.initial: [] > `const` Initial JSON value. -##### patch.path: /- +#### patch.path: /- > `const` @@ -243,37 +243,37 @@ with: location: /items/${params.id};cid=${correlationId} ``` -##### with.topic +#### with.topic > `string` Kafka topic name, optionally referencing path parameter such as `${params.topic}`. -##### with.acks +#### with.acks > `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` Kafka acknowledgement mode -##### with.key +#### with.key > `string` Kafka message key, optionally referencing path parameter such as `${params.id}`. -##### with.overrides +#### with.overrides > `map` of `name: value` properties Kafka message headers, with values optionally referencing path parameter. -##### with.reply-to +#### with.reply-to > `string` Kafka reply-to topic name. -##### with.async +#### with.async > `map` of `name: value` properties diff --git a/src/reference/config/bindings/http-kafka/proxy.md b/src/reference/config/bindings/http-kafka/proxy.md index 273cd736..a655bc38 100644 --- a/src/reference/config/bindings/http-kafka/proxy.md +++ b/src/reference/config/bindings/http-kafka/proxy.md @@ -14,5 +14,4 @@ The http-kafka proxy binding - diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 6d63531a..32084acb 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -1,91 +1,79 @@ -### options - -> `object` - -`http`-specific options. - -```yaml -options: - access-control: - policy: cross-origin - authorization: - my_jwt_guard: - credentials: - headers: - authorization: Bearer {credentials} - overrides: - custom-text: custom-value -``` #### options.requests > `array` of `object` -##### requests[].content +#### requests[].content -> `object` of a named [`model`](../models/) +> `object` Enforce validation for the request content. -##### requests[].content-type +#### content.model + +> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] + +A schema or type to validate the request content. + +#### requests[].content-type > `string` -##### requests[].headers +#### requests[].headers > `string` -##### requests[].method +#### requests[].method > `enum` [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ] -##### requests[].params +#### requests[].params > `string` -###### params.path +#### params.path > `object` of a named [`model`](../models/) Enforce validation for path -###### params.query +#### params.query > `object` of a named [`model`](../models/) Enforce validation for query -##### requests[].path +#### requests[].path > `string` -##### requests[].responses +#### requests[].responses > `array` of `object` -###### responses[].content +#### responses[].content > `string` -###### responses[].content-type +#### responses[].content-type > `array` of `string` -###### responses[].headers +#### responses[].headers > `map` of "name: [model](../models/)" properties @@ -98,7 +86,7 @@ headers: maxLength: 100 ``` -###### responses[].status +#### responses[].status > `string` @@ -107,128 +95,6 @@ headers: Supported protocol versions. -#### options.access-control - -> **oneOf**: [same-origin](#access-control-policy-same-origin) | [cross-origin](#access-control-policy-cross-origin) - -Access control policy for the `HTTP` protocol. - -##### access-control.policy\* - -> `enum` [ "same-origin" , "cross-origin" ] - -Supported access control policies. - -##### access-control.policy: same-origin - -> `string` - -Extra properties aren't needed when using Same Origin access control for the `HTTP` protocol. - -```yaml -options: - access-control: - policy: same-origin -``` - -##### access-control.policy: cross-origin - -> `object` - -Additional properties that cover Cross Origin Resource Sharing (CORS) access control for the `HTTP` protocol. - -```yaml -options: - access-control: - policy: cross-origin -``` - -##### access-control.allow - -> `object` | Default: all origins, methods and headers, without credentials - -Allowed cross-origin request origins, methods, headers and credentials. -CORS allowed request origins, methods, headers and credentials for the `HTTP` protocol. - -###### allow.origins - -> `array` of `string` - -Allowed request origins. - -###### allow.methods - -> `array` of `string` - -Allowed request methods. - -###### allow.headers - -> `array` of `string` - -Allowed request headers. - -###### allow.credentials - -> `boolean` - -Support `fetch` credentials mode `include`. - -##### access-control.max-age - -> `integer` - -Maximum cache age (in seconds) for allowed headers and methods. - -##### access-control.expose - -> `object` | Default: all response headers - -Exposed cross-origin response headers. - -###### expose.headers - -> `array` of `string` - -Exposed response headers. - -#### options.authorization - -> `object` as map of named objects - -Authorization by a named guard for the `HTTP/1.1` and `HTTP/2` protocols. - -```yaml -authorization: - my_jwt_guard: - credentials: - headers: - authorization: Bearer {credentials} -``` - -##### authorization.credentials - -> `object` - -Defines how to extract credentials from the HTTP request. - -###### credentials.cookies - -> `object` as map of `string` - -Named cookie value pattern with `{credentials}`. - -###### credentials.headers - -> `map` of `name: value` properties - -Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -###### credentials.query - -> `object` as map of `string` - -Named query parameter value pattern with `{credentials}`. #### options.overrides diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index cbd6b1b9..8f3848fd 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -41,7 +41,7 @@ routes: ":authority": example.com:443 ``` -##### when[].headers +#### when[].headers > `map` of `name: value` properties diff --git a/src/reference/config/bindings/http/client.md b/src/reference/config/bindings/http/client.md index 9dc9cc5e..0b02d659 100644 --- a/src/reference/config/bindings/http/client.md +++ b/src/reference/config/bindings/http/client.md @@ -14,7 +14,20 @@ Conditional routes based on `http` request headers are used to route these netwo ## Configuration (\* required) +### options + +> `object` + +`client`-specific options. + +```yaml +options: + overrides: + custom-text: custom-value +``` + + diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index b73511f5..b92d4f4d 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -18,7 +18,130 @@ Conditional routes based on `http` request headers are used to route these appli ## Configuration (\* required) +### options + +> `object` + +`server`-specific options. + +```yaml +options: + access-control: + policy: cross-origin + authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} + overrides: + custom-text: custom-value +``` + + +#### options.access-control + +> **oneOf**: [same-origin](#access-control-policy-same-origin) | [cross-origin](#access-control-policy-cross-origin) + +Access control policy for the `HTTP` protocol. + +#### access-control.policy\* + +> `enum` [ "same-origin" , "cross-origin" ] + +Supported access control policies. + +#### access-control.policy: same-origin + +> `string` + +Extra properties aren't needed when using Same Origin access control for the `HTTP` protocol. + +```yaml +options: + access-control: + policy: same-origin +``` + +#### access-control.policy: cross-origin + +> `object` + +Additional properties that cover Cross Origin Resource Sharing (CORS) access control for the `HTTP` protocol. + +```yaml +options: + access-control: + policy: cross-origin +``` + +#### access-control.allow + +> `object` | Default: all origins, methods and headers, without credentials + +Allowed cross-origin request origins, methods, headers and credentials. +CORS allowed request origins, methods, headers and credentials for the `HTTP` protocol. + +#### allow.origins + +> `array` of `string` + +Allowed request origins. + +#### allow.methods + +> `array` of `string` + +Allowed request methods. + +#### allow.headers + +> `array` of `string` + +Allowed request headers. + +#### allow.credentials + +> `boolean` + +Support `fetch` credentials mode `include`. + +#### access-control.max-age + +> `integer` + +Maximum cache age (in seconds) for allowed headers and methods. + +#### access-control.expose + +> `object` | Default: all response headers + +Exposed cross-origin response headers. + +#### expose.headers + +> `array` of `string` + +Exposed response headers. + + +#### options.authorization + +> `object` as map of named objects + +Authorization by a named guard for the `HTTP/1.1` and `HTTP/2` protocols. + +```yaml +authorization: + my_jwt_guard: + credentials: + headers: + authorization: Bearer {credentials} +``` + + + + diff --git a/src/reference/config/bindings/kafka-grpc/.partials/options.md b/src/reference/config/bindings/kafka-grpc/.partials/options.md index 1c7aa4b2..5263b610 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/options.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/options.md @@ -30,7 +30,7 @@ The `kafka` acknowledgment mode. Metadata header used to specify the idempotency key when adapting `kafka` topic streams to `grpc` request-response streams. -##### idempotency.metadata +#### idempotency.metadata > `string` | Default: `"idempotency-key"`. @@ -42,31 +42,31 @@ The `grpc` metadata header name for idempotency key. Kafka request message headers injected when adapting `kafka` topic streams to `grpc` request-response streams. -##### correlation.headers +#### correlation.headers > `object` Kafka request message correlation header names used when adapting `kafka` topic streams to `grpc` request-response streams. -##### headers.service +#### headers.service > `string` | Default: `"zilla:service"` Kafka header name for `grpc` service. -##### headers.method +#### headers.method > `string` | Default: `"zilla:method"` Kafka header name for `grpc` method. -##### headers.correlation-id +#### headers.correlation-id > `string` | Default: `"zilla:correlation-id"` Kafka header name for request-response correlation identifier. -##### headers.reply-to +#### headers.reply-to > `string` | Default: `"zilla:reply-to"` diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index ece75f99..479d7629 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -47,31 +47,31 @@ routes: method: example.EchoService/* ``` -##### when[].topic +#### when[].topic > `string` The name of a Kafka topic for requests. -##### when[].key +#### when[].key > `string` The name of a Kafka topic for requests. -##### when[].headers +#### when[].headers > `map` of `name: value` properties Header name value pairs (all match). -##### when[].reply-to +#### when[].reply-to > `string` The name of the Kafka topic for correlated responses. -##### when[].method +#### when[].method > `string` @@ -102,13 +102,13 @@ with: authority: localhost:7151 ``` -##### with.scheme +#### with.scheme > `string` The `grpc` request scheme. -##### with.authority +#### with.authority > `string` diff --git a/src/reference/config/bindings/kafka-grpc/remote_server.md b/src/reference/config/bindings/kafka-grpc/remote_server.md index 81fac36e..dca4754f 100644 --- a/src/reference/config/bindings/kafka-grpc/remote_server.md +++ b/src/reference/config/bindings/kafka-grpc/remote_server.md @@ -14,5 +14,4 @@ The kafka-grpc remote_server binding - diff --git a/src/reference/config/bindings/kafka-proxy/proxy.md b/src/reference/config/bindings/kafka-proxy/proxy.md index 7e5f3698..4279965d 100644 --- a/src/reference/config/bindings/kafka-proxy/proxy.md +++ b/src/reference/config/bindings/kafka-proxy/proxy.md @@ -17,15 +17,5 @@ The kafka-proxy proxy binding ## Configuration (\* required) - -### exit\* - -> `string` - -Default exit binding when no conditional routes are viable. - -```yaml -exit: tls_client -``` - + diff --git a/src/reference/config/bindings/kafka/.partials/client.yaml b/src/reference/config/bindings/kafka/.partials/client.yaml index a25d33f9..40a2241a 100644 --- a/src/reference/config/bindings/kafka/.partials/client.yaml +++ b/src/reference/config/bindings/kafka/.partials/client.yaml @@ -1,4 +1,10 @@ kafka_client: type: kafka kind: client - exit: tcp_client + options: + servers: + - ${{env.KAFKA_BOOTSTRAP_SERVER}} + sasl: + mechanism: scram-sha-256 + username: ${{env.SASL_USERNAME}} + password: ${{env.SASL_PASSWORD}} diff --git a/src/reference/config/bindings/kafka/.partials/options.md b/src/reference/config/bindings/kafka/.partials/options.md deleted file mode 100644 index c5d2e6fe..00000000 --- a/src/reference/config/bindings/kafka/.partials/options.md +++ /dev/null @@ -1,82 +0,0 @@ -### options - -> `object` - -`kafka`-specific options. - -```yaml -options: - bootstrap: - - items-requests - - items-responses - topics: - - name: items-requests - defaultOffset: live -``` - -#### options.bootstrap - -> `array` of `string` - -Topics to bootstrap in cache server even when no clients. - -#### options.topics - -> `array` of `object` - -Topic configuration. - -#### topics[].name\* - -> `string` - -Topic name. - -#### topics[].defaultOffset - -> `enum` [ "live", "historical" ] | Default: `"historical"` - -Fetch offset to use for new consumers - -#### topics[].key - -> `object` of a named [`model`](../models/) - -Enforce validation for key - -#### topics[].value - -> `object` of a named [`model`](../models/) - -Enforce validation for value - -#### options.servers - -> `array` of `string` - -Bootstrap servers to use when connecting to `kafka` cluster. - -#### options.sasl - -> `object` - -SASL credentials to use when connecting to `kafka` brokers. - -#### sasl.mechanism\* - -> `enum` [ "plain", "scram-sha-1", "scram-sha-256", "scram-sha-512" ] - -SASL mechanism\ -Supports `plain` and `scram` mechanisms. - -#### sasl.username - -> `string` - -SASL username. - -#### sasl.password - -> `string` - -SASL password. diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index a0f258df..b0ae9100 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -24,7 +24,7 @@ routes: List of conditions (any match) to match this route. Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) -##### when[].topic\* +#### when[].topic\* > `string` diff --git a/src/reference/config/bindings/kafka/cache_client.md b/src/reference/config/bindings/kafka/cache_client.md index 5b937875..f5f73dc0 100644 --- a/src/reference/config/bindings/kafka/cache_client.md +++ b/src/reference/config/bindings/kafka/cache_client.md @@ -12,7 +12,26 @@ The kafka cache_client binding ## Configuration (\* required) - +### options + +> `object` + +`kafka`-specific options. + +```yaml +options: + topics: + - name: items-requests +``` + +#### options.topics + +> `array` of `object` + +Topic configuration. + + + diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index 4746f12a..36a37b73 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -12,7 +12,42 @@ The kafka cache_server binding ## Configuration (\* required) - +### options + +> `object` + +`cache_server`-specific options. + +```yaml +options: + bootstrap: + - items-requests + - items-responses + topics: + - name: items-requests + defaultOffset: live +``` + +#### options.bootstrap + +> `array` of `string` + +Topics to bootstrap in cache server even when no clients. + +#### options.topics + +> `array` of `object` + +Topic configuration. + + + +#### topics[].defaultOffset + +> `enum` [ "live", "historical" ] | Default: `"historical"` + +Fetch offset to use for new consumers + diff --git a/src/reference/config/bindings/kafka/client.md b/src/reference/config/bindings/kafka/client.md index bf24cebb..c5db1707 100644 --- a/src/reference/config/bindings/kafka/client.md +++ b/src/reference/config/bindings/kafka/client.md @@ -12,7 +12,36 @@ The kafka client binding ## Configuration (\* required) - +### options + +> `object` + +`client`-specific options. + +```yaml +options: + servers: + - kafka:9092 + sasl: + mechanism: plain + username: my_username + password: my_password +``` + +#### options.servers + +> `array` of `string` + +Bootstrap servers to use when connecting to `kafka` cluster. + +#### options.sasl + +> `object` + +SASL credentials to use when connecting to `kafka` brokers. + + + diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/options.md b/src/reference/config/bindings/mqtt-kafka/.partials/options.md index 7d657ed2..6c563b8f 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/options.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/options.md @@ -29,7 +29,7 @@ options: retained: mqtt-retained ``` -##### topics.sessions\* +#### topics.sessions\* > `string` @@ -39,13 +39,13 @@ A Kafka topic for storing mqtt session states. A `compact` [cleanup.policy](https://kafka.apache.org/30/generated/topic_config.html#topicconfigs_cleanup.policy) is required. ::: -##### topics.messages\* +#### topics.messages\* > `string` The default Kafka topic used for routing mqtt messages. -##### topics.retained\* +#### topics.retained\* > `string` @@ -73,7 +73,7 @@ options: MQTT `publish`-specific options. -##### publish.qosMax +#### publish.qosMax > `enum` [ "at_most_once", "at_least_once", "exactly_once" ] | default: "exactly_once" diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md index 139e9bec..2547b887 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -45,7 +45,7 @@ routes: - topic: place/# ``` -##### when[].publish +#### when[].publish > `array` of `object` @@ -57,13 +57,13 @@ Array of MQTT topic filters matching topic names for publish. - topic: subs/# ``` -##### publish[].topic +#### publish[].topic > `string` MQTT topic filter pattern. -##### when[].subscribe +#### when[].subscribe > `array` of `object` @@ -75,7 +75,7 @@ Array of MQTT topic filters matching topic names for subscribe. - topic: subs/# ``` -##### subscribe[].topic +#### subscribe[].topic > `string` @@ -98,7 +98,7 @@ with: messages: mqtt-devices ``` -##### with.messages +#### with.messages > `string` diff --git a/src/reference/config/bindings/mqtt/.partials/options.md b/src/reference/config/bindings/mqtt/.partials/options.md index 67aa119e..8b137891 100644 --- a/src/reference/config/bindings/mqtt/.partials/options.md +++ b/src/reference/config/bindings/mqtt/.partials/options.md @@ -1,94 +1 @@ -### options - -> `object` - -`mqtt`-specific options. - -```yaml -options: - authorization: - my_jwt_guard: - credentials: - connect: - username: Bearer {credentials} - versions: - - v5 - - v3.1.1 -``` - -#### options.authorization - -> `object` as map of named objects - -Authorization by a named guard. - -```yaml -authorization: - my_jwt_guard: - credentials: - connect: - username: Bearer {credentials} -``` - -#### authorization.credentials - -> `object` - -Defines how to extract credentials from the MQTT connect packet. - -##### credentials.connect - -> `object` - -MQTT connect packet properties - -##### connect.username - -> `string` - -Extract credentials from the MQTT connect packet username property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -##### connect.password - -> `string` - -Extract credentials from the MQTT connect packet password property with `{credentials}`, e.g. `"Bearer` `{credentials}"`. - -#### options.versions - -> `array` of `enum` [ "v5", "v3.1.1" ] - -Supported protocol versions. - -#### options.topics - -> `array` of `object` - -Topic configuration. - -#### topics[].name\* - -> `string` - -Topic name. - -#### topics[].content - -> `object` of a named [`model`](../models/) - -Enforce validation for content - -#### topics[].user-properties - -> `map` of "name: [model](../models/)" properties - -Enforce validation for user provided properties - -```yaml -user-properties: - my-app-prop: - type: integer - minimum: 0 - maximum: 100 -``` diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index 147476b4..344e6e62 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -36,35 +36,35 @@ routes: - topic: reply ``` -##### when[].session +#### when[].session > `array` of `object` Array of mqtt session properties -##### session[].client-id +#### session[].client-id > `string` An MQTT client identifier, allowing the usage of wildcards. -##### when[].publish +#### when[].publish > `array` of `object` Array of MQTT topic names for publish capability. -###### publish[].topic +#### publish[].topic > `string` -##### when[].subscribe +#### when[].subscribe > `array` of `object` Array of MQTT topic names for subscribe capability. -###### subscribe[].topic +#### subscribe[].topic > `string` diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index dd8c3df9..fc60bc2e 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -12,7 +12,42 @@ The mqtt client binding ## Configuration (\* required) +### options + +> `object` + +`client`-specific options. + +```yaml +options: + authorization: + my_jwt_guard: + credentials: + connect: + username: Bearer {credentials} + versions: + - v5 + - v3.1.1 +``` + + +#### options.authorization + +> `object` as map of named objects + +Authorization by a named guard. + +```yaml +authorization: + my_jwt_guard: + credentials: + connect: + username: Bearer {credentials} +``` + + + diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index cb4ce593..4668ad80 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -12,7 +12,88 @@ The mqtt server binding ## Configuration (\* required) + +### options + +> `object` + +`server`-specific options. + +```yaml +options: + authorization: + my_jwt_guard: + credentials: + connect: + username: Bearer {credentials} + versions: + - v5 + - v3.1.1 +``` + + +#### options.authorization + +> `object` as map of named objects + +Authorization by a named guard. + +```yaml +authorization: + my_jwt_guard: + credentials: + connect: + username: Bearer {credentials} +``` + + + +#### options.versions + +> `array` of `enum` [ "v5", "v3.1.1" ] + +Supported protocol versions. + +#### options.topics + +> `array` of `object` + +Topic configuration. + +#### topics[].name\* + +> `string` + +Topic name. + +#### topics[].content + +> `object` of a named [`model`](../models/) + +Enforce validation for content + +#### content.model + +> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] + +A schema or type to validate the request content. + +#### topics[].user-properties + +> `map` of "name: [model](../models/)" properties + +Enforce validation for user provided properties + +```yaml +user-properties: + my-app-prop: + type: integer + minimum: 0 + maximum: 100 +``` + + diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index 5b6771d3..2fc4a4f8 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -19,7 +19,7 @@ options: OpenAPI and AsyncAPI specs definition. -##### specs.openapi +#### specs.openapi > `object` of `name: value` properties @@ -41,7 +41,7 @@ Subject name used when storing the catalog artifact. Catalog artifact version to use. -##### specs.asyncapi +#### specs.asyncapi > `object` of `name: value` properties diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md index b0aaabcd..b3db82ca 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -4,6 +4,19 @@ Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations to `asyncapi` operations. +#### routes[].guarded + +> `object` as named map of `string:string` `array` + +List of roles required by each named guard to authorize this route. + +```yaml +routes: + - guarded: + my_guard: + - read:items +``` + #### routes[].when > `array` of `object` @@ -11,13 +24,13 @@ Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations List of conditions to match this route when adapting `openapi` request-response streams to `asyncapi` streams. Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) -##### when[].api-id +#### when[].api-id > `string` OpenAPI spec identifier that matches from the `openapi` binding request stream. -##### when[].operation-id +#### when[].operation-id > `string` @@ -47,13 +60,13 @@ with: api-id: my-asyncapi-spec ``` -##### with.api-id +#### with.api-id > `string` AsyncAPI spec identifier that the route exits with to the next binding -##### with.operation-id +#### with.operation-id > `string` diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index 8abcd076..44caeb19 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -42,9 +42,9 @@ Catalog artifact version to use. #### specs.servers -> `object` +> `array` of `object` -#### servers.url +#### servers[].url > `string` @@ -56,7 +56,7 @@ The server url to match in openapi spec `http` specific options. -##### http.authorization +#### http.authorization > `object` as map of named properties @@ -70,25 +70,25 @@ authorization: authorization: Bearer {credentials} ``` -##### authorization.credentials +#### authorization.credentials > `object` Defines how to extract credentials from the HTTP request. -##### credentials.cookies +#### credentials.cookies > `map` of `name: value` properties Named cookie value pattern with `{credentials}`. -##### credentials.headers +#### credentials.headers > `map` of `name: value` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. -##### credentials.query +#### credentials.query > `map` of `name: value` properties @@ -100,13 +100,13 @@ Named query parameter value pattern with `{credentials}`. `client` specific `tcp` options. -##### tcp.host +#### tcp.host > `string` Hostname or IP address. -##### tcp.port +#### tcp.port > `integer` | `string` | `array` of `integer` | `array` of `string` @@ -118,49 +118,49 @@ Port number(s), including port number ranges. `tls` specific options. -##### tls.version +#### tls.version > `string` Protocol version. -##### tls.keys +#### tls.keys > `array` of `string` A list of reference names for the Vault key. -##### tls.trust +#### tls.trust > `array` of `string` A list of reference names for the Vault certificate. -##### tls.signers +#### tls.signers > `array` of `string` A list of reference names for the Vault signer certificate. -##### tls.trustcacerts +#### tls.trustcacerts > `boolean` | Default: `true` when trust is `null` Trust CA certificates. -##### tls.sni\* +#### tls.sni\* > `array` of `string` A list of the Server Name Indications. -##### tls.alpn +#### tls.alpn > `array` of `string` Application protocols. -##### tls.mutual +#### tls.mutual > `enum` [ "required", "requested", "none" ] | Default: `"none"` diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md index 3997f32b..6ae17880 100644 --- a/src/reference/config/bindings/openapi/client.md +++ b/src/reference/config/bindings/openapi/client.md @@ -13,5 +13,5 @@ The openapi client binding ## Configuration (\* required) - + diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md index 3f6405f9..3a87f010 100644 --- a/src/reference/config/bindings/openapi/server.md +++ b/src/reference/config/bindings/openapi/server.md @@ -12,6 +12,7 @@ The openapi server binding ## Configuration (\* required) + diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index 239f3d51..9abc5aa9 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -34,54 +34,99 @@ routes: List of conditions (any match) to match this route. Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) -##### when[].transport +#### when[].transport > `enum` [ "stream", "datagram" ] Transport type. -##### when[].family +#### when[].family > `enum` [ "inet", "inet4", "inet6", "unix" ] Address family. -##### when[].source +#### when[].source > `object` Source address. -##### source.host +#### source.host > `string` Hostname or IP address. -##### source.port +#### source.port > `integer` Port number. -##### when[].destination +#### when[].destination > `object` Destination address. -##### destination.host +#### destination.host > `string` Hostname or IP address. -##### destination.port +#### destination.port > `integer` Port number. +#### when[].info + +> `object` + +#### info.alpn + +> `string` + +#### info.authority + +> `string` + +#### info.identity + +> `string` + +#### info.namespace + +> `string` + +#### info.secure + +> `string` + +#### secure.cipher + +> `string` + +#### secure.key + +> `string` + +#### secure.name + +> `string` + +#### secure.signature + +> `string` + +#### secure.version + +> `string` + + #### routes[].exit\* > `string` diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md index c611779b..a81ee1e5 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/routes.md +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -41,7 +41,7 @@ routes: - path: /items ``` -##### when[].path\* +#### when[].path\* > `string` @@ -66,13 +66,13 @@ routes: Kafka parameters used when adapting `sse` data streams to `kafka` data streams. -##### with.topic\* +#### with.topic\* > `string` Topic name, optionally referencing path parameter such as `${params.topic}`. -##### with.filters +#### with.filters > `array` of `object` @@ -80,25 +80,25 @@ Kafka filters for matched route when adapting `sse` data streams to `kafka` data List of criteria (any match). All specified headers and key must match for the combined criteria to match. -##### filters[].key +#### filters[].key > `string` Message key, optionally referencing path parameter such as `${params.key}`. -##### filters[].headers +#### filters[].headers > `map` of `name: value` properties Message headers, with value optionally referencing path parameter such as `${params.headerX}`. -##### with.event +#### with.event > `object` Defines the SSE event syntax used when delivering Kafka messages to SSE clients. -##### event.id\* +#### event.id\* > `enum` [ `"${etag}"`, `"["${base64(key)}","${etag}"]"` ] | Default: `"${etag}"` diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index 34744506..63821452 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -21,14 +21,20 @@ Retry delay (ms) the `requests`-specific options. -##### requests[].path +#### requests[].path > `string` The path selector. -##### requests[].content +#### requests[].content -> `object` of a named [`model`](../models/) +> `object` Enforce validation for the request content. + +#### content.model + +> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] + +A schema or type to validate the request content. diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md index 25f2e35e..15253b8f 100644 --- a/src/reference/config/bindings/sse/.partials/routes.md +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -40,7 +40,7 @@ routes: - path: /items ``` -##### when[].path\* +#### when[].path\* > `string` diff --git a/src/reference/config/bindings/tcp/.partials/routes.md b/src/reference/config/bindings/tcp/.partials/routes.md index 119a25d2..e6f328bd 100644 --- a/src/reference/config/bindings/tcp/.partials/routes.md +++ b/src/reference/config/bindings/tcp/.partials/routes.md @@ -1,9 +1,3 @@ -### routes - -> `array` of `object` - -Conditional `tcp`-specific routes. - #### routes[].guarded > `object` as named map of `string:string` `array` @@ -17,33 +11,20 @@ List of roles required by each named guard to authorize this route. List of conditions (any match) to match this route. Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) -##### when[].authority +#### when[].authority > `string` Associated authority. -##### when[].cidr +#### when[].cidr > `string` CIDR mask. -##### when[].port +#### when[].port > `integer` | `string` | `array` of `integer` | `array` of `string` Port number(s), including port number ranges. - -#### routes[].exit\* - -> `string` - -Next binding when following this route, for kind `server` only. - -```yaml -routes: - - when: - ... - exit: echo_server -``` diff --git a/src/reference/config/bindings/tcp/client.md b/src/reference/config/bindings/tcp/client.md index a143e83f..adcbfee1 100644 --- a/src/reference/config/bindings/tcp/client.md +++ b/src/reference/config/bindings/tcp/client.md @@ -13,6 +13,13 @@ The tcp client binding ## Configuration (\* required) + +### routes + +> `array` of `object` + +Conditional `client`-specific routes. + - + diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md index 8ac0dea0..43b1e471 100644 --- a/src/reference/config/bindings/tcp/server.md +++ b/src/reference/config/bindings/tcp/server.md @@ -13,6 +13,27 @@ The tcp server binding ## Configuration (\* required) + +### routes + +> `array` of `object` + +Conditional `server`-specific routes. + + +#### routes[].exit\* + +> `string` + +Next binding when following this route, for kind `server` only. + +```yaml +routes: + - when: + ... + exit: echo_server +``` + diff --git a/src/reference/config/bindings/tls/.partials/options.md b/src/reference/config/bindings/tls/.partials/options.md index 10aa3315..e5071e86 100644 --- a/src/reference/config/bindings/tls/.partials/options.md +++ b/src/reference/config/bindings/tls/.partials/options.md @@ -61,5 +61,3 @@ Application protocols. > `enum` [ "required", "requested", "none" ] | Default: `"none"` Mutual authentication - - diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index ea3168a5..8cc805f3 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -37,19 +37,19 @@ routes: - alpn: echo ``` -##### when[].authority +#### when[].authority > `string` Associated authority. -##### when[].alpn +#### when[].alpn > `string` Application protocol. -##### when[].port +#### when[].port > `integer` | `string` | `array` of `integer` | `array` of `string` diff --git a/src/reference/config/bindings/tls/proxy.md b/src/reference/config/bindings/tls/proxy.md index 1a90a050..2e46c80c 100644 --- a/src/reference/config/bindings/tls/proxy.md +++ b/src/reference/config/bindings/tls/proxy.md @@ -13,7 +13,6 @@ The tls proxy binding ## Configuration (\* required) - diff --git a/src/reference/config/bindings/ws/.partials/options.md b/src/reference/config/bindings/ws/.partials/options.md index 4f746c7b..e314892b 100644 --- a/src/reference/config/bindings/ws/.partials/options.md +++ b/src/reference/config/bindings/ws/.partials/options.md @@ -33,5 +33,3 @@ Authority. > `string` Path. - - diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index 366ff00c..177f2b45 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -37,25 +37,25 @@ routes: - protocol: echo ``` -##### when[].protocol +#### when[].protocol > `string` Subprotocol pattern. -##### when[].scheme +#### when[].scheme > `string` Scheme pattern. -##### when[].authority +#### when[].authority > `string` Authority pattern. -##### when[].path +#### when[].path > `string` diff --git a/src/reference/config/bindings/ws/server.md b/src/reference/config/bindings/ws/server.md index 539235b6..c7cd1065 100644 --- a/src/reference/config/bindings/ws/server.md +++ b/src/reference/config/bindings/ws/server.md @@ -12,7 +12,6 @@ The ws server binding ## Configuration (\* required) - diff --git a/src/reference/config/catalogs/catalog-filesystem.md b/src/reference/config/catalogs/catalog-filesystem.md index 3b2514fa..22b0c7f7 100644 --- a/src/reference/config/catalogs/catalog-filesystem.md +++ b/src/reference/config/catalogs/catalog-filesystem.md @@ -35,7 +35,7 @@ Defines a catalog with schemas, AsyncAPI/OpenAPI definitions or proto files pull Unique identifier for artifact categorization in the catalog. -##### subjects.path\* +#### subjects.path\* > `string` diff --git a/src/reference/config/catalogs/catalog-inline.md b/src/reference/config/catalogs/catalog-inline.md index d1d9c006..d6f5f854 100644 --- a/src/reference/config/catalogs/catalog-inline.md +++ b/src/reference/config/catalogs/catalog-inline.md @@ -49,13 +49,13 @@ Defines a catalog with schemas to enforce validation. The schemas are defined in Unique identifier for schema categorization in the registry. -##### subjects.schema\* +#### subjects.schema\* > `string` Definition specifying data structure and format in detail. -##### subjects.version +#### subjects.version > `string` | Default: `"latest"` diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md new file mode 100644 index 00000000..27834d17 --- /dev/null +++ b/src/reference/config/models/.partials/cataloged.md @@ -0,0 +1,46 @@ +### catalog\* + +> `object` + +To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. + +> `id` +> `record` +----- +> `strategy` +> `version` +> `record` +----- +> `subject` +> `version` +> `record` + +#### catalog.strategy + +> `enum` [ "topic" ] + +To determine the subject based on the specified strategy + +#### catalog.subject + +> `string` + +Unique identifier for schema categorization in the catalog. + +#### catalog.version + +> `string` | Default: `"latest"` + +Specific iteration or version of a registered schema in the defined catalog. + +#### catalog.id + +> `integer` + +Define specific schema id to refer from catalog. + +#### catalog.record\* + +> `string` + +Define specific record to refer from the schema. diff --git a/src/reference/config/models/model-avro.md b/src/reference/config/models/model-avro.md index 1a10341d..00a02b16 100644 --- a/src/reference/config/models/model-avro.md +++ b/src/reference/config/models/model-avro.md @@ -33,40 +33,4 @@ Defines a model to utilize schema from catalog to enforce validation, ensuring a Transforms the model from this data type to the Avro schema on produce and to this data type from the Avro schema on consume. -### catalog\* - -> `object` - -To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. - -> `id` ------ -> `strategy` -> `version` ------ -> `subject` -> `version` - -#### catalog.strategy - -> `enum` [ "topic" ] - -To determine the subject based on the specified strategy - -#### catalog.subject - -> `string` - -Unique identifier for schema categorization in the catalog. - -#### catalog.version - -> `string` | Default: `"latest"` - -Specific iteration or version of a registered schema in the defined catalog. - -#### catalog.id - -> `integer` - -Define specific schema id to refer from catalog. + diff --git a/src/reference/config/models/model-json.md b/src/reference/config/models/model-json.md index 2bbe1e8f..823f3b66 100644 --- a/src/reference/config/models/model-json.md +++ b/src/reference/config/models/model-json.md @@ -26,40 +26,4 @@ catalog: Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. -### catalog\* - -> `object` - -To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. - -> `id` ------ -> `strategy` -> `version` ------ -> `subject` -> `version` - -#### catalog.strategy - -> `enum` [ "topic" ] - -To determine the subject based on the specified strategy - -#### catalog.subject - -> `string` - -Unique identifier for schema categorization in the catalog. - -#### catalog.version - -> `string` | Default: `"latest"` - -Specific iteration or version of a registered schema in the defined catalog. - -#### catalog.id - -> `integer` - -Define specific schema id to refer from catalog. + diff --git a/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md b/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md index ae02e945..81beb59b 100644 --- a/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md +++ b/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md @@ -55,7 +55,7 @@ options: Configuration for transmitting custom metric data points to Amazon CloudWatch. -##### metrics.namespace\* +#### metrics.namespace\* > `string` @@ -63,7 +63,7 @@ The namespace for the metric data. To avoid conflicts with Amazon Web Services service namespaces, you should not specify a namespace that begins with `AWS/`. -##### metrics.interval +#### metrics.interval > `integer` @@ -75,13 +75,13 @@ Interval in seconds to push data to the Amazon CloudWatch. Default: 30 seconds. Configuration for transmitting log events to Amazon CloudWatch. -##### logs.group\* +#### logs.group\* > `string` The name of the log group. -##### logs.stream\* +#### logs.stream\* > `string` diff --git a/src/reference/config/telemetry/exporters/exporter-otlp.md b/src/reference/config/telemetry/exporters/exporter-otlp.md index 8b7610b1..7534f96f 100644 --- a/src/reference/config/telemetry/exporters/exporter-otlp.md +++ b/src/reference/config/telemetry/exporters/exporter-otlp.md @@ -61,13 +61,13 @@ Specifies what signals should be exported. The default behavior is to export all Contains details for the OpenTelemetry Protocol collector endpoint. -##### endpoint.protocol +#### endpoint.protocol > `string` Specifies the protocol to use for exporting data. Currently only `http` is supported. The default is `http`. -##### endpoint.location\* +#### endpoint.location\* > `string` diff --git a/src/reference/config/telemetry/exporters/exporter-prometheus.md b/src/reference/config/telemetry/exporters/exporter-prometheus.md index 86b285f2..6826c265 100644 --- a/src/reference/config/telemetry/exporters/exporter-prometheus.md +++ b/src/reference/config/telemetry/exporters/exporter-prometheus.md @@ -44,19 +44,19 @@ options: Contains `prometheus` endpoints. -##### endpoints[].scheme +#### endpoints[].scheme > `enum` [ "http" ] URL scheme to accept for endpoint. -##### endpoints[].port +#### endpoints[].port > `int` URL port to accept for endpoint. -##### endpoints[].path +#### endpoints[].path > `string` diff --git a/src/reference/config/vaults/vault-filesystem.md b/src/reference/config/vaults/vault-filesystem.md index 0d765dea..66befd1d 100644 --- a/src/reference/config/vaults/vault-filesystem.md +++ b/src/reference/config/vaults/vault-filesystem.md @@ -53,20 +53,20 @@ options: Private keys. -##### keys.store\* +#### keys.store\* > `string` Relative path to keystore. -##### keys.type +#### keys.type > `string` Keystore type,\ defaults to `"pkcs12"` -##### keys.password +#### keys.password > `string` @@ -78,20 +78,20 @@ Keystore password. Trust certificates. -##### trust.store\* +#### trust.store\* > `string` Relative path to keystore. -##### trust.type +#### trust.type > `string` Keystore type,\ defaults to `"pkcs12"` -##### trust.password +#### trust.password > `string` @@ -103,20 +103,20 @@ Keystore password. Signer certificates. -##### signers.store\* +#### signers.store\* > `string` Relative path to keystore. -##### signers.type +#### signers.type > `string` Keystore type.\ defaults to `"pkcs12"` -##### signers.password +#### signers.password > `string` diff --git a/src/reference/manager/overview.md b/src/reference/manager/overview.md index c4d2969a..a0cb7967 100644 --- a/src/reference/manager/overview.md +++ b/src/reference/manager/overview.md @@ -97,19 +97,19 @@ Stores the remote repository credentials. List of repository credentials -##### credentials[].host +#### credentials[].host > `string` Repository hostname -##### credentials[].username +#### credentials[].username > `string` Repository credentials username -##### credentials[].password +#### credentials[].password > `string` From a412bd31c6efc8ea1ff393c1cbb05aae96ab7411 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 26 Aug 2024 11:48:26 -0400 Subject: [PATCH 15/54] update model properties --- .check-schema/index.js | 116 +++++++++--------- .check-schema/zilla-schema.json | 3 +- .github/contributing/writing-guide.md | 10 +- src/concepts/bindings.md | 22 ++-- src/concepts/catalogs.md | 4 +- src/concepts/kafka-proxies/grpc-proxy.md | 12 +- src/concepts/kafka-proxies/http-proxy.md | 12 +- src/concepts/kafka-proxies/mqtt-proxy.md | 10 +- src/concepts/spec-generation.md | 8 +- src/concepts/ssl.md | 6 +- src/concepts/telemetry.md | 4 +- .../connecting-to-kafka/apache-kafka.md | 4 +- src/how-tos/deploy-operate.md | 4 +- src/how-tos/grpc/grpc.route-guide.service.md | 14 +-- src/how-tos/mqtt/mqtt.kafka.broker.md | 24 ++-- .../.partials/options-kafka-topics.md | 4 +- .../config/bindings/amqp/.partials/routes.md | 2 +- src/reference/config/bindings/amqp/README.md | 3 +- src/reference/config/bindings/amqp/server.md | 2 +- .../bindings/asyncapi/.partials/routes.md | 2 +- .../config/bindings/asyncapi/README.md | 1 - src/reference/config/bindings/echo/README.md | 1 - src/reference/config/bindings/fan/README.md | 1 - .../config/bindings/filesystem/README.md | 1 - .../bindings/grpc-kafka/.partials/routes.md | 2 +- .../config/bindings/grpc-kafka/README.md | 1 - .../config/bindings/grpc/.partials/options.md | 22 ---- src/reference/config/bindings/grpc/README.md | 2 +- src/reference/config/bindings/grpc/client.md | 1 - src/reference/config/bindings/grpc/server.md | 2 +- .../http-filesystem/.partials/routes.md | 2 +- .../config/bindings/http-filesystem/README.md | 1 - .../bindings/http-kafka/.partials/routes.md | 2 +- .../config/bindings/http-kafka/README.md | 1 - .../config/bindings/http/.partials/options.md | 24 +++- .../config/bindings/http/.partials/routes.md | 2 +- src/reference/config/bindings/http/README.md | 3 +- src/reference/config/bindings/http/server.md | 2 +- .../bindings/kafka-grpc/.partials/routes.md | 2 +- .../config/bindings/kafka-grpc/README.md | 1 - .../config/bindings/kafka-proxy/README.md | 1 - .../config/bindings/kafka/.partials/routes.md | 2 +- src/reference/config/bindings/kafka/README.md | 25 ++-- .../bindings/mqtt-kafka/.partials/routes.md | 2 +- .../config/bindings/mqtt-kafka/README.md | 1 - .../config/bindings/mqtt/.partials/routes.md | 2 +- src/reference/config/bindings/mqtt/README.md | 1 - src/reference/config/bindings/mqtt/server.md | 10 +- .../openapi-asyncapi/.partials/routes.md | 2 +- .../bindings/openapi-asyncapi/README.md | 1 - .../config/bindings/openapi/README.md | 1 - .../config/bindings/proxy/.partials/routes.md | 2 +- src/reference/config/bindings/proxy/README.md | 1 - .../bindings/sse-kafka/.partials/routes.md | 2 +- .../config/bindings/sse-kafka/README.md | 1 - .../config/bindings/sse/.partials/options.md | 2 +- .../config/bindings/sse/.partials/routes.md | 2 +- src/reference/config/bindings/sse/README.md | 1 - .../config/bindings/tcp/.partials/routes.md | 2 +- src/reference/config/bindings/tcp/README.md | 1 - .../config/bindings/tls/.partials/routes.md | 2 +- src/reference/config/bindings/tls/README.md | 1 - .../config/bindings/ws/.partials/routes.md | 2 +- src/reference/config/bindings/ws/README.md | 1 - .../options-schema-registry.md} | 0 ...curio-registry.md => apicurio-registry.md} | 16 ++- .../{catalog-aws-glue.md => aws-glue.md} | 11 +- .../catalog-karapace-schema-registry.md | 42 ------- .../catalogs/catalog-schema-registry.md | 40 ------ ...gistry.md => confluent-schema-registry.md} | 34 +---- .../{catalog-filesystem.md => filesystem.md} | 8 +- .../catalogs/{catalog-inline.md => inline.md} | 8 +- .../catalogs/karapace-schema-registry.md | 25 ++++ .../config/catalogs/schema-registry.md | 22 ++++ .../config/guards/{guard-jwt.md => jwt.md} | 21 +--- .../config/models/.partials/cataloged.md | 32 +++-- .../config/models/.partials/number.md | 11 ++ .../config/models/{model-avro.md => avro.md} | 7 +- src/reference/config/models/double.md | 21 ++++ src/reference/config/models/float.md | 21 ++++ src/reference/config/models/int32.md | 22 ++++ src/reference/config/models/int64.md | 21 ++++ .../config/models/{model-json.md => json.md} | 7 +- src/reference/config/models/model-integer.md | 20 --- .../models/{model-protobuf.md => protobuf.md} | 38 ++++-- .../models/{model-string.md => string.md} | 7 +- src/reference/config/telemetry/events.md | 3 +- ...er-aws-cloudwatch.md => aws-cloudwatch.md} | 17 +-- .../exporters/{exporter-otlp.md => otlp.md} | 21 ++-- .../{exporter-prometheus.md => prometheus.md} | 8 +- .../{exporter-stdout.md => stdout.md} | 3 +- .../{exporter-syslog.md => syslog.md} | 8 +- .../metrics/{metric-grpc.md => grpc.md} | 8 +- .../metrics/{metric-http.md => http.md} | 8 +- .../metrics/{metric-stream.md => stream.md} | 8 +- .../config/vaults/{vault-aws.md => aws.md} | 19 +-- .../{vault-filesystem.md => filesystem.md} | 29 ++--- 97 files changed, 458 insertions(+), 516 deletions(-) rename src/reference/config/catalogs/{.templates/schema-registry-config.md => .partials/options-schema-registry.md} (100%) rename src/reference/config/catalogs/{catalog-apicurio-registry.md => apicurio-registry.md} (82%) rename src/reference/config/catalogs/{catalog-aws-glue.md => aws-glue.md} (81%) delete mode 100644 src/reference/config/catalogs/catalog-karapace-schema-registry.md delete mode 100644 src/reference/config/catalogs/catalog-schema-registry.md rename src/reference/config/catalogs/{catalog-confluent-schema-registry.md => confluent-schema-registry.md} (64%) rename src/reference/config/catalogs/{catalog-filesystem.md => filesystem.md} (87%) rename src/reference/config/catalogs/{catalog-inline.md => inline.md} (91%) create mode 100644 src/reference/config/catalogs/karapace-schema-registry.md create mode 100644 src/reference/config/catalogs/schema-registry.md rename src/reference/config/guards/{guard-jwt.md => jwt.md} (96%) create mode 100644 src/reference/config/models/.partials/number.md rename src/reference/config/models/{model-avro.md => avro.md} (87%) create mode 100644 src/reference/config/models/double.md create mode 100644 src/reference/config/models/float.md create mode 100644 src/reference/config/models/int32.md create mode 100644 src/reference/config/models/int64.md rename src/reference/config/models/{model-json.md => json.md} (83%) delete mode 100644 src/reference/config/models/model-integer.md rename src/reference/config/models/{model-protobuf.md => protobuf.md} (84%) rename src/reference/config/models/{model-string.md => string.md} (85%) rename src/reference/config/telemetry/exporters/{exporter-aws-cloudwatch.md => aws-cloudwatch.md} (88%) rename src/reference/config/telemetry/exporters/{exporter-otlp.md => otlp.md} (77%) rename src/reference/config/telemetry/exporters/{exporter-prometheus.md => prometheus.md} (90%) rename src/reference/config/telemetry/exporters/{exporter-stdout.md => stdout.md} (75%) rename src/reference/config/telemetry/exporters/{exporter-syslog.md => syslog.md} (96%) rename src/reference/config/telemetry/metrics/{metric-grpc.md => grpc.md} (94%) rename src/reference/config/telemetry/metrics/{metric-http.md => http.md} (92%) rename src/reference/config/telemetry/metrics/{metric-stream.md => stream.md} (96%) rename src/reference/config/vaults/{vault-aws.md => aws.md} (93%) rename src/reference/config/vaults/{vault-filesystem.md => filesystem.md} (92%) diff --git a/.check-schema/index.js b/.check-schema/index.js index b0256c84..825855f0 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -6,7 +6,7 @@ const schema = require("./zilla-schema.json"); const main = async () => { await $RefParser.dereference(schema); - // console.log("RefParser", JSON.stringify(schema, null, 4)) + // console.log("RefParser", JSON.stringify(schema)) var errors = []; function getPageProps(tokens) { @@ -36,12 +36,14 @@ const main = async () => { var props = []; // console.log(attr, Object.keys(obj || {})); Object.entries(obj).forEach(([k, i]) => { - // console.log(k, JSON.stringify(i, null, 4)); + // console.log(k, JSON.stringify(i)); if (!i || !!i.deprecated) return //recurse + if (i.patternProperties) { + i = i.patternProperties[Object.keys(i.patternProperties)[0]]; + } if (i.properties && Object.keys(i.properties).length) { - // console.log(k, Object.keys(i.properties).length) props.push(...getObjProps(k, i.properties, i.required)); } if (i.items?.properties && Object.keys(i.items?.properties).length) { @@ -49,12 +51,6 @@ const main = async () => { ...getObjProps(`${k}[]`, i.items.properties, i.items.required) ); } - if (i.patternProperties) { - var ppObj = - i.patternProperties[Object.keys(i.patternProperties)[0]]; - if (ppObj.properties) - props.push(...getObjProps(k, ppObj.properties, ppObj.properties)); - } i.anyOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => @@ -64,7 +60,10 @@ const main = async () => { .forEach(({ properties, required }) => props.push(...getObjProps(`${k}[]`, properties, required)) ); - + i.items?.oneOf?.filter(({ properties }) => !!properties) + .forEach(({ properties, required }) => + props.push(...getObjProps(`${k}`, properties, required)) + ); i.oneOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => props.push(...getObjProps(k, properties, [...(i.required || []), ...(required || [])])) @@ -121,34 +120,32 @@ const main = async () => { } var sections = []; - // var sections = Object.entries({ - // guard: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], - // vault: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], - // catalog: schema.properties.catalogs.patternProperties[Object.keys(schema.properties.catalogs.patternProperties)[0]], - // }).map(([section, props]) => - // props?.allOf?.map(({ if: fi, then }) => ({ - // folder: `${section}s`, - // name: fi.properties.type.const || fi.properties.type.enum?.[0], - // props: { - // ...schema.$defs[section].properties, - // ...(props?.properties || {}), - // ...(then.properties || {}), - // options: { - // ...(schema.$defs.options[section]?.[(fi.properties.type.const || fi.properties.type.enum?.[0])] || {}), - // ...(schema.$defs[section].properties?.options || {}), - // ...(props?.properties?.options || {}), - // ...(then.properties?.options || {}), - // }, - // required: [...(props?.required || []), ...(then.required || [])], - // anyOf: [...(then.anyOf || [])], - // }, - // })) - // ).flat(1); + var sections = Object.entries({ + guard: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], + vault: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], + catalog: schema.properties.catalogs.patternProperties[Object.keys(schema.properties.catalogs.patternProperties)[0]], + }).map(([section, props]) => + props?.allOf?.map(({ if: fi, then }) => ({ + folder: `${section}s`, + name: fi.properties.type.const || fi.properties.type.enum?.[0], + props: { + ...(props?.properties || {}), + ...(then.properties || {}), + options: (then.properties?.options != false ? { + properties: { + ...(props?.properties?.options?.properties || {}), + ...(then.properties?.options?.properties || {}), + } + } : {}), + required: [...(props?.required || []), ...(then.required || [])], + anyOf: [...(then.anyOf || [])], + }, + })) + ).flat(1); var bindings = schema.properties.bindings.patternProperties[Object.keys(schema.properties.bindings.patternProperties)[0]]; bindings.allOf?.forEach(({ if: fi, then }) => { var folder = `bindings.${fi.properties.type.const}`; - // if (folder == "bindings.grpc") console.log(folder, JSON.stringify({ if: fi, then }, null, 4)) if (then.oneOf) { sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf }) => ({ folder, @@ -197,7 +194,6 @@ const main = async () => { }); } }) - // console.log("sections", JSON.stringify(sections)); var exporterProps = schema.properties.telemetry.properties.exporters.patternProperties[Object.keys(schema.properties.telemetry.properties.exporters.patternProperties)[0]] @@ -205,21 +201,27 @@ const main = async () => { ...exporterProps?.allOf?.map(({ if: fi, then }) => ({ folder: "telemetry.exporters", name: fi.properties.type.const, - props: then, + props: { + ...(exporterProps?.properties || {}), + ...(then.properties || {}), + required: [...(exporterProps?.required || []), ...(then.required || [])], + anyOf: [...(then.anyOf || [])], + } + })) + ); + sections.push( + ...schema.$defs.converter.model?.allOf.map(({ if: fi, then }) => ({ + folder: "models", + name: fi.properties.model.const, + props: { + ...(then.properties || {}), + required: (then.required || []), + anyOf: (then.anyOf || []), + } })) ); - // var modelProps = schema.properties.converter.properties.exporters.patternProperties[Object.keys(schema.properties.telemetry.properties.exporters.patternProperties)[0]] - // sections.push( - // ...schema.$defs.converter.model?.allOf.map(({ if: fi, then }) => ({ - // type: "model", - // folder: "models", - // name: fi.properties.model.const, - // props:{ [fi.properties.model.const]: { - // ...(schema.$defs.converter.model || {}), ...(then || {}) , - // }}, - // })) - // ); + // console.log("sections", JSON.stringify(sections)); sections.forEach(({ folder, name, props }) => { delete props.type; delete props.kind; @@ -235,7 +237,6 @@ const main = async () => { fullMdContent = fullMdContent.replace(//g, (_, p1) => (fs.readFileSync(path.resolve(foldername, p1), "utf8").toString()) ); - // console.log("fullMdContent", fullMdContent) // get page headers and schema props var pageHeaders = getPageProps(marked.lexer(fullMdContent)).sort().filter((value, index, array) => @@ -244,33 +245,26 @@ const main = async () => { var schemaProps = attrs.map((a) => a[0]).sort().filter((value, index, array) => array.indexOf(value) === index ); - // console.log("findings", folder, name, schemaProps, pageHeaders); // print diff check var addDiff = schemaProps.filter((x) => !pageHeaders.includes(x) ) - if (addDiff.length >= 0) console.log(folder, name, "add", addDiff); var removeDiff = pageHeaders.filter((x) => !schemaProps.includes(x) ) - if (removeDiff.length >= 0) console.log(folder, name, "remove", removeDiff); - - if (addDiff.length + removeDiff.length) process.exitCode = 1; + if (addDiff.length + removeDiff.length) { + process.exitCode = 1; + console.log(folder, name, "add", addDiff, "remove", removeDiff); + // console.log("findings", folder, name, schemaProps, pageHeaders); + } } else { errors.push(`missing ${name}`); process.exitCode = 1; } }); - //check metrics - // { - // type: 'telemetry.metrics', - // name: 'grpc', - // properties: schema.$defs.telemetry.metrics.items.enum.filter((m) => m.startsWith('grpc')), - // } - - // console.log(errors) + if (errors.length) console.log("errors", errors) }; main(); diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index cf46a1f0..c1ed0608 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -349,6 +349,7 @@ "type": "object", "properties": { "protocol": { + "type": "string", "enum": [ "http" ], @@ -4508,7 +4509,7 @@ "model": { "const": "protobuf" }, - "viewview": { + "view": { "type": "string", "enum": [ "json" diff --git a/.github/contributing/writing-guide.md b/.github/contributing/writing-guide.md index f32f9aa9..16439f5d 100644 --- a/.github/contributing/writing-guide.md +++ b/.github/contributing/writing-guide.md @@ -66,15 +66,15 @@ Your users need reference material because they need truth and certainty - firm Links to other md files should use the local files path reference to the new document in order for any file render to correctly add links. -- `[grpc-kafka](../path/to/bindings/binding-grpc-kafka.md)` +- `[grpc-kafka](../path/to/bindings/grpc-kafka/README.md)` When referencing specific attributes of the Zilla api always use and highlight the syntactically correct words found in the reference docs or config. Add any extra descriptive words before or after. -- `[grpc-kafka](../path/to/bindings/binding-grpc-kafka.md) Binding` -- `[jwt](../path/to/guards/guard-jwt.md) Guard` -- `[produce capability](../path/to/bindings/binding-grpc-kafka.md#produce-capability)` +- `[grpc-kafka](../path/to/bindings/grpc-kafka/README.md) Binding` +- `[jwt](../path/to/guards/jwt.md) Guard` +- `[produce capability](../path/to/bidndings/grpc-kafka/README.md#produce-capability)` -[Reference-style links](https://www.markdownguide.org/basic-syntax/#reference-style-links) should only be used to clarify reading the raw text document when it is needed. This should be used in lists, tables, or complicated paragraphs. When used the reference definition should be placed in a group with other references and as close the usage as makes sense. Exact highlighted context should be used unless there is a case when reuse of the same link is needed in the same section. +[Reference-style links](https://www.markdownguide.org/basic-syntax/README.md#reference-style-links) should only be used to clarify reading the raw text document when it is needed. This should be used in lists, tables, or complicated paragraphs. When used the reference definition should be placed in a group with other references and as close the usage as makes sense. Exact highlighted context should be used unless there is a case when reuse of the same link is needed in the same section. Good examples improve readability without adding extra work for a plain text reader: diff --git a/src/concepts/bindings.md b/src/concepts/bindings.md index 8b7d24d6..482cd3fc 100644 --- a/src/concepts/bindings.md +++ b/src/concepts/bindings.md @@ -55,11 +55,11 @@ A `client` receives inbound application streams and encodes each as a network st #### Cache Client & Server Bindings -A `cache_client` & `cache_server` combined provide a persistent cache of Kafka messages per topic partition, honoring the Kafka topic configuration for message expiration and compaction. Read more in the [kafka](../reference/config/bindings/binding-kafka.md#cache-behavior) binding. +A `cache_client` & `cache_server` combined provide a persistent cache of Kafka messages per topic partition, honoring the Kafka topic configuration for message expiration and compaction. Read more in the [kafka](../reference/config/bindings/kafka/README.md#cache-behavior) binding. #### Remote Server Bindings -A `remote_server` exists to adapt a Kafka topic stream to a higher-level application stream. Read more in the [kafka-grpc](../reference/config/bindings/binding-kafka-grpc.md#summary) binding. +A `remote_server` exists to adapt a Kafka topic stream to a higher-level application stream. Read more in the [kafka-grpc](../reference/config/bindings/kafka-grpc/) binding. ## Routes @@ -93,11 +93,11 @@ A condition will attempt to match the target stream exactly against the configur - `client-123` - `client-*` -[http-kafka]:../reference/config/bindings/binding-http-kafka.md#routes -[sse-kafka]:../reference/config/bindings/binding-sse-kafka.md#routes -[grpc-kafka]:../reference/config/bindings/binding-grpc-kafka.md#routes -[kafka-grpc]:../reference/config/bindings/binding-kafka-grpc.md#routes -[mqtt-kafka]:../reference/config/bindings/binding-mqtt-kafka.md#routes +[http-kafka]:../reference/config/bindings/http-kafka/proxy.md#routes +[sse-kafka]:../reference/config/bindings/sse-kafka/proxy.md#routes +[grpc-kafka]:../reference/config/bindings/grpc-kafka/proxy.md#routes +[kafka-grpc]:../reference/config/bindings/kafka-grpc/remote_server.md#routes +[mqtt-kafka]:../reference/config/bindings/mqtt-kafka/proxy.md#routes ## Dynamic path parameters @@ -111,11 +111,11 @@ After the route logic matches, additional parameters are applied `with` the inbo Routes with the `fetch` capability map retrieval requests from a Kafka topic, supporting filtered or unfiltered retrieval of messages from the topic partitions, merged into a unified response. Filtering can apply to the Kafka message key, message headers, or a combination of both message key and headers. -The [http-kafka](../reference/config/bindings/binding-http-kafka.md) binding provides additional support for extracting parameter values from the inbound HTTP request path. Successful `200 OK` HTTP responses include an [ETag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) header that can be used with [if-none-match](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match) for subsequent conditional `GET` requests to check for updates. Rather than polling, HTTP requests can also include the `prefer wait=N` header to wait a maximum of `N` seconds before responding with `304 Not Modified` if not modified. When a new message arrives on the topic that would modify the response, all `prefer: wait=N` clients receive the response immediately with a corresponding new ETag. +The [http-kafka](../reference/config/bindings/http-kafka/) binding provides additional support for extracting parameter values from the inbound HTTP request path. Successful `200 OK` HTTP responses include an [ETag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) header that can be used with [if-none-match](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match) for subsequent conditional `GET` requests to check for updates. Rather than polling, HTTP requests can also include the `prefer wait=N` header to wait a maximum of `N` seconds before responding with `304 Not Modified` if not modified. When a new message arrives on the topic that would modify the response, all `prefer: wait=N` clients receive the response immediately with a corresponding new ETag. ### Reliable message delivery -With the [grpc-kafka](../reference/config/bindings/binding-grpc-kafka.md) binding, using the fetch capability, reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the gRPC client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new gRPC request. This allows interrupted streams to pick up where they left off without missing messages in the response stream. +With the [grpc-kafka](../reference/config/bindings/grpc-kafka/) binding, using the fetch capability, reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the gRPC client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new gRPC request. This allows interrupted streams to pick up where they left off without missing messages in the response stream. ### The Produce capability @@ -123,13 +123,13 @@ Routes with the `produce` capability map any request-response network call to a Requests with an `idempotency-key` header can be replayed and receive the same response. A Kafka consumer can detect and ignore any potential duplicate requests because they will have the same `idempotency-key` and `zilla:correlation-id`. -In the [http-kafka](../reference/config/bindings/binding-http-kafka.md) binding, specifying `async` allows clients to include a `prefer: respond-async` header in the HTTP request to receive `202 Accepted` response with `location` response header. +In the [http-kafka](../reference/config/bindings/http-kafka/) binding, specifying `async` allows clients to include a `prefer: respond-async` header in the HTTP request to receive `202 Accepted` response with `location` response header. A corresponding `routes[].when` object with a matching `GET` method and `location` path is also required for follow-up `GET` requests to return the same response as would have been returned if the `prefer: respond-async` request header had been omitted. ## Route Exit -A route exists to direct a data stream to a desired exit point. This is the next binding needed to parse the stream data. Bindings like [tcp](../reference/config/bindings/binding-tcp.md) are frequently used to route incoming streams to different exit points. Once a valid exit point is determined messages can flow to the correct `exit` destination. +A route exists to direct a data stream to a desired exit point. This is the next binding needed to parse the stream data. Bindings like [tcp](../reference/config/bindings/tcp/) are frequently used to route incoming streams to different exit points. Once a valid exit point is determined messages can flow to the correct `exit` destination. ## Guarded Routes diff --git a/src/concepts/catalogs.md b/src/concepts/catalogs.md index 6aa3f98f..24f8c0f1 100644 --- a/src/concepts/catalogs.md +++ b/src/concepts/catalogs.md @@ -17,12 +17,12 @@ catalogs: ## Local Catalogs -The simplest catalogs allow Zilla to access resources directly. The [filesystem](../reference/config/catalogs/catalog-filesystem.md) catalog will look for resources on the host filesystem. To embed a resource directly into the Zilla config yaml an [inline](../reference/config/catalogs/catalog-inline.md) catalog can be used to define any text based resource. +The simplest catalogs allow Zilla to access resources directly. The [filesystem](../reference/config/catalogs/filesystem.md) catalog will look for resources on the host filesystem. To embed a resource directly into the Zilla config yaml an [inline](../reference/config/catalogs/inline.md) catalog can be used to define any text based resource. > [http.proxy.schema.inline example](https://github.com/aklivity/zilla-examples/tree/main/http.proxy.schema.inline) ## Remote Catalogs -Zilla can reference remote configs stored in third-party services like Schema Registry. The [schema-registry](../reference/config/catalogs/catalog-schema-registry.md) and [apicurio-registry](../reference/config/catalogs/catalog-apicurio-registry.md) catalogs allow zilla to interact with those services through their admin APIs. +Zilla can reference remote configs stored in third-party services like Schema Registry. The [schema-registry](../reference/config/catalogs/schema-registry.md) and [apicurio-registry](../reference/config/catalogs/apicurio-registry.md) catalogs allow zilla to interact with those services through their admin APIs. > [Apicurio in the Petstore REST Demo](https://github.com/aklivity/zilla-demos/tree/main/petstore) | [http.kafka.karapace example](https://github.com/aklivity/zilla-examples/tree/main/http.kafka.karapace) diff --git a/src/concepts/kafka-proxies/grpc-proxy.md b/src/concepts/kafka-proxies/grpc-proxy.md index f6c740a6..e0d81869 100644 --- a/src/concepts/kafka-proxies/grpc-proxy.md +++ b/src/concepts/kafka-proxies/grpc-proxy.md @@ -8,11 +8,11 @@ next: /tutorials/grpc/grpc-intro.md The Zilla gRPC Kafka Proxy lets you implement gRPC service definitions from protobuf files to produce and consume messages via Kafka topics. -Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../../reference/config/bindings/binding-grpc-kafka.md) and [kafka-grpc](../../reference/config/bindings/binding-kafka-grpc.md) bindings in a [zilla.yaml](../../reference/config/overview.md) config. Additionally, Zilla can sit on the critical path between a gRPC client and server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. +Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../../reference/config/bindings/grpc-kafka/) and [kafka-grpc](../../reference/config/bindings/kafka-grpc/) bindings in a [zilla.yaml](../../reference/config/overview/) config. Additionally, Zilla can sit on the critical path between a gRPC client and server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. ## RPC Service Definitions -Zilla supports all four [gRPC service method definitions](https://grpc.io/docs/what-is-grpc/core-concepts/#service-definition). The request and return message(s) are managed through two different Kafka topics, respectively. These topics are defined through [dynamic method routing](../bindings.md#routes). +Zilla supports all four [gRPC service method definitions](https://grpc.io/docs/what-is-grpc/core-concepts/README.md#service-definition). The request and return message(s) are managed through two different Kafka topics, respectively. These topics are defined through [dynamic method routing](../bindings.md#routes). Zilla can also handle the stream upgrade when a client sends a single request, but the service expects a stream. Zilla does this by treating all gRPC request and response messages as a stream of messages on Kafka topics with at least one data message and a null end-of-stream message representing the end of the request or response streams. @@ -54,14 +54,14 @@ Zilla manages the synchronous request and response messages of a gRPC service. R ## gRPC Metadata -Method routes can use [custom metadata fields](../../reference/config/bindings/binding-grpc-kafka.md#when-metadata) for request routing and idempotency. Zilla can also augment the metadata it sends based on the configured route the request matches. +Method routes can use [custom metadata fields](../../reference/config/bindings/grpc-kafka/proxy.md#when-metadata) for request routing and idempotency. Zilla can also augment the metadata it sends based on the configured route the request matches. ## Reliable Delivery -Clients can fetch some or all messages from a single Kafka topic using a route with the [fetch capability](../../reference/config/bindings/binding-grpc-kafka.md#fetch-capability) by creating a service definition with an `Empty` request type and the topic message as the response type. Zilla sends an event ID with every message serialized as an unknown field in the payload. Messages can be identified without field collision, and the client doesn't need to acknowledge the message receipt explicitly. A client consuming the stream of messages can remember the event ID. In the event, the stream gets interrupted. The client can reconnect with a `last-event-id` header to recover without message loss or needing to start over from the beginning. +Clients can fetch some or all messages from a single Kafka topic using a route with the [fetch capability](../../reference/config/bindings/grpc-kafka/proxy.md#fetch-capability) by creating a service definition with an `Empty` request type and the topic message as the response type. Zilla sends an event ID with every message serialized as an unknown field in the payload. Messages can be identified without field collision, and the client doesn't need to acknowledge the message receipt explicitly. A client consuming the stream of messages can remember the event ID. In the event, the stream gets interrupted. The client can reconnect with a `last-event-id` header to recover without message loss or needing to start over from the beginning. ## Kafka Consumer Groups -The [kafka-grpc](../../reference/config/bindings/binding-kafka-grpc.md) `remote_server` binding will create a consumer group. It creates one consumer per named binding in a zilla config. The format of the consumer group ID is `zilla:-`. Scaling the number of Zilla instances with the same configuration will add each new Zilla instance as a member of the same group. Using different Zilla `namespace`s or adding multiple bindings will create different consumer groups. +The [kafka-grpc](../../reference/config/bindings/kafka-grpc/) `remote_server` binding will create a consumer group. It creates one consumer per named binding in a zilla config. The format of the consumer group ID is `zilla:-`. Scaling the number of Zilla instances with the same configuration will add each new Zilla instance as a member of the same group. Using different Zilla `namespace`s or adding multiple bindings will create different consumer groups. -The [grpc-kakfa](../../reference/config/bindings/binding-grpc-kafka.md) does not create consumer groups. Instead, the binding fetches messages from a topic the same way for all connected clients. Clients can filter messages received using filters like adding the desired Kafka message key in the `idempotency-key` header. The client can track and recover progress through the stream using [reliable delivery](#reliable-delivery). +The [grpc-kakfa](../../reference/config/bindings/grpc-kafka/) does not create consumer groups. Instead, the binding fetches messages from a topic the same way for all connected clients. Clients can filter messages received using filters like adding the desired Kafka message key in the `idempotency-key` header. The client can track and recover progress through the stream using [reliable delivery](#reliable-delivery). diff --git a/src/concepts/kafka-proxies/http-proxy.md b/src/concepts/kafka-proxies/http-proxy.md index be23154a..17c13c7f 100644 --- a/src/concepts/kafka-proxies/http-proxy.md +++ b/src/concepts/kafka-proxies/http-proxy.md @@ -12,11 +12,11 @@ A developer has the freedom to define their own HTTP mapping to Kafka, with cont ## Configure Endpoints -Zilla can map REST APIs to Kafka using the [http-kafka](../../reference/config/bindings/binding-http-kafka.md) binding in a [zilla.yaml](../../reference/config/overview.md) config. Zilla routes REST urls using [wildcard pattern matching](../bindings.md#pattern-matching) and [dynamic path params](../bindings.md#dynamic-path-parameters). Dynamic path matching and custom message routing from endpoints to Kafka topics help prevent API lock-in. +Zilla can map REST APIs to Kafka using the [http-kafka](../../reference/config/bindings/http-kafka.md/) binding in a [zilla.yaml](../../reference/config/overview.md) config. Zilla routes REST urls using [wildcard pattern matching](../bindings.md#pattern-matching) and [dynamic path params](../bindings.md#dynamic-path-parameters). Dynamic path matching and custom message routing from endpoints to Kafka topics help prevent API lock-in. ### HTTP request methods -Zilla separates the HTTP request methods into two groups called capabilities: produce and fetch. The [produce](../bindings.md#the-fetch-capability) capability handles method types `POST`, `PUT`, `DELETE`, and `PATCH` that produce messages onto Kafka topics. The [fetch](../../reference/config/bindings/binding-http-kafka.md#with-capability-fetch) capability handles the `GET` method that fetches messages from Kafka topics. One exception is for a route managing async correlation. The `produce` route will have two when clauses: a `PUT` clause for submission and a `GET` clause matching the `async.location` path returned to the caller. +Zilla separates the HTTP request methods into two groups called capabilities: produce and fetch. The [produce](../bindings.md#the-fetch-capability) capability handles method types `POST`, `PUT`, `DELETE`, and `PATCH` that produce messages onto Kafka topics. The [fetch](../../reference/config/bindings/http-kafka/proxy.md#with-capability-fetch) capability handles the `GET` method that fetches messages from Kafka topics. One exception is for a route managing async correlation. The `produce` route will have two when clauses: a `PUT` clause for submission and a `GET` clause matching the `async.location` path returned to the caller. ## Correlated Request-Response @@ -32,13 +32,13 @@ An asynchronous interaction includes a `prefer: respond-async` header when calli ## SSE Streaming -The Zilla Server-sent Events (SSE) Kafka Proxy exposes an SSE stream of Kafka messages using the [sse-kafka](../../reference/config/bindings/binding-sse-kafka.md) binding. +The Zilla Server-sent Events (SSE) Kafka Proxy exposes an SSE stream of Kafka messages using the [sse-kafka](../../reference/config/bindings/sse-kafka/) binding. An [SSE](https://html.spec.whatwg.org/multipage/server-sent-events.html) server allows a web browser using the `EventSource` interface to send a request to an SSE endpoint and receive a stream of text from the server, interpreted as individual messages. Zilla relays text messages on a Kafka topic into the event stream. ### Message Filtering -The message source topic is defined in a route, and the route is matched by the path defined for the client to connect. A route can [filter](../../reference/config/bindings/binding-sse-kafka.md#routes-with) the messages delivered to the SSE stream using the message key and headers. A filter's value can be statically defined in the config or be pulled from a [path param](../bindings.md#dynamic-path-parameters). +The message source topic is defined in a route, and the route is matched by the path defined for the client to connect. A route can [filter](../../reference/config/bindings/sse-kafka/proxy.md#routes-with) the messages delivered to the SSE stream using the message key and headers. A filter's value can be statically defined in the config or be pulled from a [path param](../bindings.md#dynamic-path-parameters). ### Reliable Delivery @@ -60,11 +60,11 @@ An HTTP response returns with an [ETag](https://developer.mozilla.org/en-US/docs ## CORS -Zilla supports Cross-Origin Resource Sharing (CORS) and allows you to specify fine-grained access control, including specific request origins, methods and headers allowed, and specific response headers exposed. Since it acts more like a guard and has no dependency on Apache Kafka configuration, you need to define it in the [http](../../reference/config/bindings/binding-http.md) binding. +Zilla supports Cross-Origin Resource Sharing (CORS) and allows you to specify fine-grained access control, including specific request origins, methods and headers allowed, and specific response headers exposed. Since it acts more like a guard and has no dependency on Apache Kafka configuration, you need to define it in the [http](../../reference/config/bindings/http/) binding. ## Authorization -Zilla has a modular config that includes the concept of a [Guard](../../reference/config/overview.md#guards) where you define your `guard` configuration and reference that `guard` to authorize a specific endpoint. JSON Web Token (JWT) authorization is supported with the [`jwt`](../../reference/config/guards/guard-jwt.md) Guard. +Zilla has a modular config that includes the concept of a [Guard](../../reference/config/overview.md#guards) where you define your `guard` configuration and reference that `guard` to authorize a specific endpoint. JSON Web Token (JWT) authorization is supported with the [`jwt`](../../reference/config/guards/jwt.md) Guard. ### SSE Continuous Authorization diff --git a/src/concepts/kafka-proxies/mqtt-proxy.md b/src/concepts/kafka-proxies/mqtt-proxy.md index 93abed90..737f69db 100644 --- a/src/concepts/kafka-proxies/mqtt-proxy.md +++ b/src/concepts/kafka-proxies/mqtt-proxy.md @@ -8,7 +8,7 @@ next: /tutorials/mqtt/mqtt-intro.md The Zilla MQTT Kafka Proxy manages MQTT Pub/Sub connections and messages on and off of Kafka. -An MQTT server acts as a broker between publishers and subscribers. This requires a complex protocol to manage the wide range of IoT devices and use cases. By proxying these messages on and off of Kafka with the [mqtt-kafka](../../reference/config/bindings/binding-mqtt-kafka.md) binding in a [zilla.yaml](../../reference/config/overview.md) config, IoT devices can transmit data to a wider range of tech stacks, adapting to more business needs. +An MQTT server acts as a broker between publishers and subscribers. This requires a complex protocol to manage the wide range of IoT devices and use cases. By proxying these messages on and off of Kafka with the [mqtt-kafka](../../reference/config/bindings/mqtt-kafka/) binding in a [zilla.yaml](../../reference/config/overview/) config, IoT devices can transmit data to a wider range of tech stacks, adapting to more business needs. Zilla uses specific Kafka topics to store and route MQTT messages, meaning the Kafka architecture can be optimized for MQTT Pub/Sub. MQTT client subscribers and publishers will communicate with Zilla the same as any broker. @@ -30,7 +30,7 @@ An MQTT client can use any Quality of Service flag. ### MQTT over WebSocket -The [tcp](../../reference/config/bindings/binding-tcp.md) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. Zilla natively handles WebSockets and can manage the MQTT protocol over an active connection. +The [tcp](../../reference/config/bindings/tcp/) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. Zilla natively handles WebSockets and can manage the MQTT protocol over an active connection. ### Last Will and Testament @@ -54,7 +54,7 @@ An MQTT client can be redirected to a specific Zilla instance, sharding client s ## Pub/Sub with Kafka -Zilla manages MQTT pub/sub to Kafka using three Kafka topics. The specific topic names can be configured using the [options.topics](../../reference/config/bindings/binding-mqtt-kafka.md#options-topics) property. +Zilla manages MQTT pub/sub to Kafka using three Kafka topics. The specific topic names can be configured using the [options.topics](../../reference/config/bindings/mqtt-kafka/proxy.md#options-topics) property. ### Messages on Kafka @@ -62,7 +62,7 @@ All MQTT messages brokered by Zilla are published on the `messages` Kafka topic. ### Topic routing -By defining [routes](../../reference/config/bindings/binding-mqtt-kafka.md#routes) in Zilla, you can direct MQTT publish and subscribe connections to specific kafka topics other than the `messages` Kafka topic. The `sessions` and `retained` topics are not affected by routing. +By defining [routes](../../reference/config/bindings/mqtt-kafka/proxy.md#routes) in Zilla, you can direct MQTT publish and subscribe connections to specific kafka topics other than the `messages` Kafka topic. The `sessions` and `retained` topics are not affected by routing. ### Retaining Messages @@ -74,4 +74,4 @@ MQTT connect, disconnect, and other session messages are maintained on the `sess ## Authorizing clients -Any connection Zilla handles can be secured using the [tls](../../reference/config/bindings/binding-tls.md) binding. This means both MQTT and MQTT over WebSocket can be encrypted. Additionally, A client connection to the MQTT server can be guarded by the [jwt](../../reference/config/guards/guard-jwt.md) guard supporting JWT access tokens, with fine-grained privileges enforced on publish or subscribe to MQTT topics. +Any connection Zilla handles can be secured using the [tls](../../reference/config/bindings/tls/) binding. This means both MQTT and MQTT over WebSocket can be encrypted. Additionally, A client connection to the MQTT server can be guarded by the [jwt](../../reference/config/guards/jwt/) guard supporting JWT access tokens, with fine-grained privileges enforced on publish or subscribe to MQTT topics. diff --git a/src/concepts/spec-generation.md b/src/concepts/spec-generation.md index fa068fca..fd787355 100644 --- a/src/concepts/spec-generation.md +++ b/src/concepts/spec-generation.md @@ -8,7 +8,7 @@ Zilla can leverage standard API schema specifications to configure the settings ## OpenAPI and AsyncAPI -The Zilla config uses many of the same parameters as the public and open-source interface definition languages [OpenAPI](https://www.openapis.org/) and [AsyncAPI](https://www.asyncapi.com/). Services and tools are available to describe your existing APIs and infrastructure using OpenAPI and AsyncAPI definitions. These specs enable more consistent documentation, versioning, and code generation. Using the [openapi](../reference/config/bindings/binding-openapi.md) and [asyncapi](../reference/config/bindings/binding-asyncapi.md) bindings enables the use of existing interface specs to configure Zilla. +The Zilla config uses many of the same parameters as the public and open-source interface definition languages [OpenAPI](https://www.openapis.org/) and [AsyncAPI](https://www.asyncapi.com/). Services and tools are available to describe your existing APIs and infrastructure using OpenAPI and AsyncAPI definitions. These specs enable more consistent documentation, versioning, and code generation. Using the [openapi](../reference/config/bindings/openapi/) and [asyncapi](../reference/config/bindings/asyncapi/) bindings enables the use of existing interface specs to configure Zilla. Zilla leverages the interface definitions in these specs to generate the necessary `zilla.yaml` config to implement the defined services. Zilla doesn't generate code that needs to be maintained. Instead, it generates the underlying configuration necessary to implement a functioning interface. Both standard and complex use cases are implemented easily with Zilla. @@ -16,13 +16,13 @@ You can see a working [Petstore Demo](https://github.com/aklivity/zilla-demos/tr ### OpenAPI -Zilla implements the RESTful APIs defined in the [openapi](../reference/config/bindings/binding-openapi.md) binding. A REST Kafka proxy is defined using the [openapi-asyncapi](../reference/config/bindings/binding-openapi-asyncapi.md) binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/binding-asyncapi.md) `client` binding. +Zilla implements the RESTful APIs defined in the [openapi](../reference/config/bindings/openapi/) binding. A REST Kafka proxy is defined using the [openapi-asyncapi](../reference/config/bindings/openapi-asyncapi/) binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/asyncapi/) `client` binding. > [Petstore REST demo](https://github.com/aklivity/zilla-demos/tree/main/petstore) | [Taxi Hailing demo](https://github.com/aklivity/zilla-demos/tree/main/taxi) | [openapi.proxy example](https://github.com/aklivity/zilla-examples/tree/main/openapi.proxy) ### AsyncAPI -Zilla implements Event-Driven APIs defined in the [asyncapi](../reference/config/bindings/binding-asyncapi.md) binding. A Kafka proxy is defined using the [asyncapi](../reference/config/bindings/binding-asyncapi.md) `proxy` binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/binding-asyncapi.md) `client` binding. +Zilla implements Event-Driven APIs defined in the [asyncapi](../reference/config/bindings/asyncapi/) binding. A Kafka proxy is defined using the [asyncapi](../reference/config/bindings/asyncapi/) `proxy` binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/asyncapi/) `client` binding. > [Taxi Hailing demo](https://github.com/aklivity/zilla-demos/tree/main/taxi) | [asyncapi.http.kafka.proxy example](https://github.com/aklivity/zilla-examples/tree/main/asyncapi.http.kafka.proxy) | [asyncapi.mqtt.kafka.proxy example](https://github.com/aklivity/zilla-examples/tree/main/asyncapi.mqtt.kafka.proxy) | [asyncapi.sse.kafka.proxy example](https://github.com/aklivity/zilla-examples/tree/main/asyncapi.sse.kafka.proxy) @@ -30,6 +30,6 @@ Zilla implements Event-Driven APIs defined in the [asyncapi](../reference/config The Zilla gRPC Kafka Proxy lets you implement gRPC service definitions from protobuf files to produce and consume messages via Kafka topics. -Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../reference/config/bindings/binding-grpc-kafka.md) and [kafka-grpc](../reference/config/bindings/binding-kafka-grpc.md) bindings in a [zilla.yaml](../reference/config/overview.md) config. Additionally, Zilla can sit on the critical path between a gRPC client and a server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. +Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../reference/config/bindings/grpc-kafka/) and [kafka-grpc](../reference/config/bindings/kafka-grpc/) bindings in a [zilla.yaml](../reference/config/overview/) config. Additionally, Zilla can sit on the critical path between a gRPC client and a server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. > [grpc.kafka.fanout example](https://github.com/aklivity/zilla-examples/tree/main/grpc.kafka.fanout) | [grpc.proxy example](https://github.com/aklivity/zilla-examples/tree/main/grpc.proxy) diff --git a/src/concepts/ssl.md b/src/concepts/ssl.md index f335c378..d962876d 100644 --- a/src/concepts/ssl.md +++ b/src/concepts/ssl.md @@ -1,8 +1,8 @@ # Server Encryption, TLS & SSL -Vaults can be used by specific protocol bindings, such as [tls](../reference/config/bindings/binding-tls.md), to negotiate shared encryption keys. It is easy to add the necessary routing logic and encryption keys. +Vaults can be used by specific protocol bindings, such as [tls](../reference/config/bindings/tls/), to negotiate shared encryption keys. It is easy to add the necessary routing logic and encryption keys. -Using a [filesystem](../reference/config/vaults/vault-filesystem.md) vault, you can see how a pkcs12 certificate on the host is configured to be stored securely by the Zilla runtime. This keystore can then be used by the [tls](../reference/config/bindings/binding-tls.md) binding to decrypt incoming traffic. +Using a [filesystem](../reference/config/vaults/filesystem.md) vault, you can see how a pkcs12 certificate on the host is configured to be stored securely by the Zilla runtime. This keystore can then be used by the [tls](../reference/config/bindings/tls/) binding to decrypt incoming traffic. ```yaml{6} vaults: @@ -15,7 +15,7 @@ vaults: password: ${{env.KEYSTORE_PASSWORD}} ``` -The [tcp](../reference/config/bindings/binding-tcp.md) binding can be configured for both encrypted and unencrypted traffic on separate ports. Take the SSL example with ports `80` and `443`. The [tls](../reference/config/bindings/binding-tls.md) binding will use the `keys` as the certificate aliases and the Server Name Indication (`sni`) as the SSL server names. These will likely be the same. Since this example is over [http](../reference/config/bindings/binding-http.md) the Application-Layer Protocol Negotiation (ALPN) will need to handle both HTTP/1.1 and HTTP/2, but the [tls](../reference/config/bindings/binding-tls.md) binding can be configured for any of the [alpn](../reference/config/bindings/binding-tls.md#options-alpn) protocols supported by Zilla. +The [tcp](../reference/config/bindings/tcp/) binding can be configured for both encrypted and unencrypted traffic on separate ports. Take the SSL example with ports `80` and `443`. The [tls](../reference/config/bindings/tls/) binding will use the `keys` as the certificate aliases and the Server Name Indication (`sni`/) as the SSL server names. These will likely be the same. Since this example is over [http](../reference/config/bindings/http/) the Application-Layer Protocol Negotiation (ALPN/) will need to handle both HTTP/1.1 and HTTP/2, but the [tls](../reference/config/bindings/tls/) binding can be configured for any of the [alpn](../reference/config/bindings/tls/server.md#options-alpn) protocols supported by Zilla. ```yaml{20,29} bindings: diff --git a/src/concepts/telemetry.md b/src/concepts/telemetry.md index c4217231..bf18277a 100644 --- a/src/concepts/telemetry.md +++ b/src/concepts/telemetry.md @@ -17,8 +17,8 @@ telemetry: ## Events -[Events](../reference/config/telemetry/events.md) in Zilla signal important activities and collect relevant information along with them. Primarily they are useful when troubleshooting common issues like model validation or failed secure access, but they provide more observability with the HTTP access information. The easiest way to see logged events in Zilla is to add the [stdout](../reference/config/telemetry/exporters/exporter-stdout.md) exporter to your `zilla.yaml` config. +[Events](../reference/config/telemetry/events.md) in Zilla signal important activities and collect relevant information along with them. Primarily they are useful when troubleshooting common issues like model validation or failed secure access, but they provide more observability with the HTTP access information. The easiest way to see logged events in Zilla is to add the [stdout](../reference/config/telemetry/exporters/stdout.md) exporter to your `zilla.yaml` config. ## Exporters -[Exporters](../reference/config/overview.md#exporters) will determine how the collected telemetry data is exposed. The [Prometheus](../reference/config/telemetry/exporters/exporter-prometheus.md) exporter Zilla will expose any configured [metrics](../reference/config/overview.md#metrics) via the standard `/metrics` endpoint that is by prometheus to collect metrics. The [stdout](../reference/config/telemetry/exporters/exporter-stdout.md) exporter will simply log all [Events](#events) to the host `stdout` and can be collected by any log aggregator. The [OpenTelemetry Protocol](../reference/config/telemetry/exporters/exporter-otlp.md) exporter can push both logs and metrics telemetry data to the specified. +[Exporters](../reference/config/overview.md#exporters) will determine how the collected telemetry data is exposed. The [Prometheus](../reference/config/telemetry/exporters/prometheus.md) exporter Zilla will expose any configured [metrics](../reference/config/overview.md#metrics) via the standard `/metrics` endpoint that is by prometheus to collect metrics. The [stdout](../reference/config/telemetry/exporters/stdout.md) exporter will simply log all [Events](#events) to the host `stdout` and can be collected by any log aggregator. The [OpenTelemetry Protocol](../reference/config/telemetry/exporters/otlp.md) exporter can push both logs and metrics telemetry data to the specified. diff --git a/src/how-tos/connecting-to-kafka/apache-kafka.md b/src/how-tos/connecting-to-kafka/apache-kafka.md index 5fbd3cc4..f398c05f 100644 --- a/src/how-tos/connecting-to-kafka/apache-kafka.md +++ b/src/how-tos/connecting-to-kafka/apache-kafka.md @@ -84,7 +84,7 @@ bindings: ::: -However, if the `Kafka` cluster is secured by a TLS server certificate that is signed by a private certificate authority then you need to add a `vault` [config](../../reference/config/vaults/vault-filesystem.md) to provide access to certificates needed by the TLS client binding. +However, if the `Kafka` cluster is secured by a TLS server certificate that is signed by a private certificate authority then you need to add a `vault` [config](../../reference/config/vaults/filesystem.md) to provide access to certificates needed by the TLS client binding. ::: code-tabs#yaml @@ -123,7 +123,7 @@ bindings: ::: -However, if the `Kafka` cluster is secured by a TLS server certificate that is signed by a private certificate authority then you need to add a `vault` [config](../../reference/config/vaults/vault-filesystem.md) to provide access to certificates needed by the TLS client binding. +However, if the `Kafka` cluster is secured by a TLS server certificate that is signed by a private certificate authority then you need to add a `vault` [config](../../reference/config/vaults/filesystem.md) to provide access to certificates needed by the TLS client binding. To test the above config you can use it to add or replace the necessary bindings in the [http.kafka.sasl.scram example](https://github.com/aklivity/zilla-examples/tree/main/http.kafka.sasl.scram). diff --git a/src/how-tos/deploy-operate.md b/src/how-tos/deploy-operate.md index 997577ac..3f1aef98 100644 --- a/src/how-tos/deploy-operate.md +++ b/src/how-tos/deploy-operate.md @@ -112,7 +112,7 @@ kubectl get pod \ | xargs -I{} kubectl exec {} -n $NAMESPACE -c zilla -- sh -c "cp -r /var/run/zilla /tmp/zilla && tar czf /tmp/zilla.tar.gz /tmp/zilla && rm -rf /tmp/zilla" ``` -Copy the compressed `/var/run/zilla` directory off of the pod into your local directory using the pod name. +Copy the compressed `/var/run/zilla` directory off of the pod into your local directory using the pod name. ```bash:no-line-numbers kubectl get pod \ @@ -135,7 +135,7 @@ This feature is demonstrated in the above Helm install command. Running a `helm ## Auto Scaling -Zilla will start workers that default to the CPU cores it is allowed to use. This makes horizontal scaling easy with a 1:1 ratio of instances to workers. Any of the default scaling metrics based on server CPU usage will enable Zilla to handle traffic spikes. Additionally, Zilla [Telemetry](../reference/config/overview.md#telemetry) configuration provides more data when determining how to scale. The [Prometheus autoscale example](https://github.com/aklivity/zilla-examples/tree/main/kubernetes.prometheus.autoscale) demonstrates using metrics from the [Prometheus exporter](../reference/config/telemetry/exporters/exporter-prometheus.md) to horizontally scale Zilla on k8s. +Zilla will start workers that default to the CPU cores it is allowed to use. This makes horizontal scaling easy with a 1:1 ratio of instances to workers. Any of the default scaling metrics based on server CPU usage will enable Zilla to handle traffic spikes. Additionally, Zilla [Telemetry](../reference/config/overview.md#telemetry) configuration provides more data when determining how to scale. The [Prometheus autoscale example](https://github.com/aklivity/zilla-examples/tree/main/kubernetes.prometheus.autoscale) demonstrates using metrics from the [Prometheus exporter](../reference/config/telemetry/exporters/prometheus.md) to horizontally scale Zilla on k8s. ## Enable Incubator Features diff --git a/src/how-tos/grpc/grpc.route-guide.service.md b/src/how-tos/grpc/grpc.route-guide.service.md index 65dd570e..37df6c17 100644 --- a/src/how-tos/grpc/grpc.route-guide.service.md +++ b/src/how-tos/grpc/grpc.route-guide.service.md @@ -8,11 +8,11 @@ next: false This guide will walk through each unique gRPC message request and response design and how Zilla is configured to manage the connection for each. -Let's take a look at how Zilla would be configured with a full featured gRPC service. For this, we will use the [route_guide.proto](https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/route_guide.proto) to define the gRPC service and the method request-response types. You can find examples of running this service in any language on the [gRPC docs](https://grpc.io/docs/languages/) as well as example clients like this one implemented in [java](https://grpc.io/docs/languages/java/basics/#client). +Let's take a look at how Zilla would be configured with a full featured gRPC service. For this, we will use the [route_guide.proto](https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/route_guide.proto) to define the gRPC service and the method request-response types. You can find examples of running this service in any language on the [gRPC docs](https://grpc.io/docs/languages/) as well as example clients like this one implemented in [java](https://grpc.io/docs/languages/java/basics/README.md#client). ## Step 1: Declaring the service -Zilla lets you use your service proto file(s) to specify the service definitions. This will let you create one or many [grpc-kafka](../../reference/config/bindings/binding-grpc-kafka.md) proxy handlers to be used by the whole service or individual methods. +Zilla lets you use your service proto file(s) to specify the service definitions. This will let you create one or many [grpc-kafka](../../reference/config/bindings/grpc-kafka/) proxy handlers to be used by the whole service or individual methods. Here is the service we will be enhancing with Zilla and Kafka. @@ -71,7 +71,7 @@ routes: ## Step 2: Handling message routing onto Kafka -This maps the proto service method's request and response messages directly to Kafka topics defined by the `topic` and `reply-to` attributes respectively. The messages are linked by the `zilla:correlation-id` header for individual calls into the gRPC service. Read more about it and how the `idempotency-key` enables safe message replays in the [grpc-kafka](../../reference/config/bindings/binding-grpc-kafka.md#produce-capability) reference section. +This maps the proto service method's request and response messages directly to Kafka topics defined by the `topic` and `reply-to` attributes respectively. The messages are linked by the `zilla:correlation-id` header for individual calls into the gRPC service. Read more about it and how the `idempotency-key` enables safe message replays in the [grpc-kafka](../../reference/config/bindings/grpc-kafka/proxy.md#produce-capability) reference section. ### Message routing for RPC request and response types @@ -134,7 +134,7 @@ routes: ### Fanout streaming RPC -An additional method for getting messages from a service onto Kafka is using the [grpc-kafka](../../reference/config/bindings/binding-grpc-kafka.md) fetch capability. This enables message filtering and reliable message delivery. Read more about the [fetch capability](../../reference/config/bindings/binding-grpc-kafka.md#fetch-capability) in the reference section. +An additional method for getting messages from a service onto Kafka is using the [grpc-kafka](../../reference/config/bindings/grpc-kafka/) fetch capability. This enables message filtering and reliable message delivery. Read more about the [fetch capability](../../reference/config/bindings/grpc-kafka/proxy.md#fetch-capability) in the reference section. The service will need a method that accepts the `google/protobuf/empty.proto` and produce the massage to be fanned out onto the Kafka topic. @@ -147,7 +147,7 @@ service FanoutService } ``` -Here we set the [fetch capability](../../reference/config/bindings/binding-grpc-kafka.md#fetch-capability) and a filter. +Here we set the [fetch capability](../../reference/config/bindings/grpc-kafka/proxy.md#fetch-capability) and a filter. ```yaml grpc_kafka: @@ -167,7 +167,7 @@ grpc_kafka: ## Step 3: Calling services from Kafka -Now that messages are in Kafka we need to send them to the gRPC services responsible for processing them. For this, we will be using the [kafka-grpc](../../reference/config/bindings/binding-kafka-grpc.md) binding. +Now that messages are in Kafka we need to send them to the gRPC services responsible for processing them. For this, we will be using the [kafka-grpc](../../reference/config/bindings/kafka-grpc/) binding. ```yaml remote_server: @@ -226,7 +226,7 @@ tcp_client: ### Proxy service entrypoint -Using a [tcp](../../reference/config/bindings/binding-tcp.md) server binding we can route the gRPC traffic through an `http` server, `${{env.ENTRYPOINT_HOST}}`:`${{env.ENTRYPOINT_PORT}}`, to our desired gRPC server at the ``. The [tls](../../reference/config/bindings/binding-tls.md) server binding secures the entrypoint by defining a tls certificate from the [filesystem](../../reference/config/vaults/vault-filesystem.md) vault, which is used to send the traffic over https. Alternatively, if tls is not needed The tcp server can exit directly to the http server and the tls binding and filesystem vault can be removed. +Using a [tcp](../../reference/config/bindings/tcp/) server binding we can route the gRPC traffic through an `http` server, `${{env.ENTRYPOINT_HOST}}`:`${{env.ENTRYPOINT_PORT}}`, to our desired gRPC server at the ``. The [tls](../../reference/config/bindings/tls/) server binding secures the entrypoint by defining a tls certificate from the [filesystem](../../reference/config/vaults/filesystem/) vault, which is used to send the traffic over https. Alternatively, if tls is not needed The tcp server can exit directly to the http server and the tls binding and filesystem vault can be removed. ```yaml tcp_server: diff --git a/src/how-tos/mqtt/mqtt.kafka.broker.md b/src/how-tos/mqtt/mqtt.kafka.broker.md index a92356a2..1d3a0f2b 100644 --- a/src/how-tos/mqtt/mqtt.kafka.broker.md +++ b/src/how-tos/mqtt/mqtt.kafka.broker.md @@ -131,37 +131,37 @@ Create a new file called `zilla.yaml` and append the below yaml to it. ### Entrypoint -This will configure Zilla for accepting all of the `mqtt` traffic. The [tcp](../../reference/config/bindings/binding-tcp.md) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. +This will configure Zilla for accepting all of the `mqtt` traffic. The [tcp](../../reference/config/bindings/tcp/) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. ```yaml{12-13,15-16} ``` ::: right -[More on binding-tcp](../../reference/config/bindings/binding-tcp.md) +[More on binding-tcp](../../reference/config/bindings/tcp/) ::: -A [ws](../../reference/config/bindings/binding-tcp.md) binding is added to handle any MQTT over WebSocket using the `mqtt` protocol. The [mqtt](../../reference/config/bindings/binding-mqtt.md) binding then handles all of the MQTT message traffic that needs to go to Kafka. +A [ws](../../reference/config/bindings/tcp/) binding is added to handle any MQTT over WebSocket using the `mqtt` protocol. The [mqtt](../../reference/config/bindings/mqtt/) binding then handles all of the MQTT message traffic that needs to go to Kafka. ```yaml{17,22} ``` ::: right -[More on binding-mqtt](../../reference/config/bindings/binding-mqtt.md) -[More on binding-ws](../../reference/config/bindings/binding-tcp.md) +[More on binding-mqtt](../../reference/config/bindings/mqtt/) +[More on binding-ws](../../reference/config/bindings/tcp/) ::: ### Service definition -The service definition defines how the clients using this service will interact with Kafka through Zilla. The required set of Kafka topics are defined in the [options.topics](../../reference/config/bindings/binding-mqtt-kafka.md#options-topics) where Zilla manages any MQTT required features. A client identity can be determined by pulling the identifier out of the topic using the [options.clients](../../reference/config/bindings/binding-mqtt-kafka.md#options-clients) property. +The service definition defines how the clients using this service will interact with Kafka through Zilla. The required set of Kafka topics are defined in the [options.topics](../../reference/config/bindings/mqtt-kafka/README.md#options-topics) where Zilla manages any MQTT required features. A client identity can be determined by pulling the identifier out of the topic using the [options.clients](../../reference/config/bindings/mqtt-kafka/proxy.md#options-clients) property. ```yaml{7-9,21} ``` ::: right -[More on binding-mqtt-kafka](../../reference/config/bindings/binding-mqtt-kafka.md) +[More on binding-mqtt-kafka](../../reference/config/bindings/mqtt-kafka/) [More on topic data](../../concepts/kafka-proxies/mqtt-proxy.md#step-2-pub-sub-message-reflect-with-kafka) ::: @@ -172,20 +172,20 @@ Additionally, a route is defined to capture any "device" messages and route them ``` ::: right -[More on When a route matches](../../../concepts/bindings.md#when-a-route-matches) -[More on binding-mqtt-kafka routing](../../reference/config/bindings/binding-mqtt-kafka.md#routes) +[More on When a route matches](../../concepts/bindings.md#when-a-route-matches) +[More on mqtt-kafka binding routes](../../reference/config/bindings/mqtt-kafka/proxy.md#routes) ::: ### Add a Kafka sync layer -The Zilla [cache_client and cache_server](../../reference/config/bindings/binding-kafka.md#kind) helps manage the smooth data transfer between the service definition and Kafka. It is important to bootstrap the topics that will be brokering MQTT messages. +The Zilla [cache_client](../../reference/config/bindings/kafka/cache_client.md) and [cache_server](../../reference/config/bindings/kafka/cache_server.md) helps manage the smooth data transfer between the service definition and Kafka. It is important to bootstrap the topics that will be brokering MQTT messages. ```yaml{11-13} ``` ::: right -[More on binding-kafka cache](../../reference/config/bindings/binding-kafka.md#cache-behavior) +[More on kafka binding cache](../../reference/config/bindings/kafka/README.md#cache-behavior) ::: ### Point to a Running Kafka instance @@ -205,7 +205,7 @@ This will define the location and connection for Zilla to communicate with Kafka ::: ::: right -[More on binding-kafka client](../../reference/config/bindings/binding-kafka.md#client-behavior) +[More on kafka cache_client binding](../../reference/config/bindings/kafka/cache_client.md) ::: ### Start Zilla diff --git a/src/reference/config/bindings/.partials/options-kafka-topics.md b/src/reference/config/bindings/.partials/options-kafka-topics.md index 57b8f3c4..99943eed 100644 --- a/src/reference/config/bindings/.partials/options-kafka-topics.md +++ b/src/reference/config/bindings/.partials/options-kafka-topics.md @@ -12,7 +12,7 @@ Enforce validation for key #### key.model -> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] A schema or type to validate the topic's key. @@ -24,6 +24,6 @@ Enforce validation for value #### value.model -> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] A schema or type to validate the topic's value. diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md index bd82ba39..d2c5aa48 100644 --- a/src/reference/config/bindings/amqp/.partials/routes.md +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -30,7 +30,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/amqp/README.md b/src/reference/config/bindings/amqp/README.md index cdb89e57..a4a05ad0 100644 --- a/src/reference/config/bindings/amqp/README.md +++ b/src/reference/config/bindings/amqp/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: amqp -description: Zilla runtime amqp binding category: - Binding tag: @@ -16,7 +15,7 @@ tag: Defines a binding with [AMQP 1.0](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html) protocol support, with `server` behavior. Conditional routes based on the link address are used to route these application streams to an `exit` binding. ::: important Feature is in Incubator -Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! +Read how to [enable incubator features](../../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! ::: ## server diff --git a/src/reference/config/bindings/amqp/server.md b/src/reference/config/bindings/amqp/server.md index d640f129..af1ec595 100644 --- a/src/reference/config/bindings/amqp/server.md +++ b/src/reference/config/bindings/amqp/server.md @@ -15,7 +15,7 @@ The amqp server binding decodes the AMQP protocol on the inbound network stream, ``` ::: important Feature is in Incubator -Read how to [enable incubator features](../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! +Read how to [enable incubator features](../../../../how-tos/deploy-operate.md#enable-incubator-features). Star and watch the [Zilla repo](https://github.com/aklivity/zilla/releases) for new releases! ::: ## Configuration (\* required) diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md index d53d7e38..b84dc6cf 100644 --- a/src/reference/config/bindings/asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -40,7 +40,7 @@ routes: > `array` of `object` List of conditions to match this route when adapting `asyncapi` MQTT streams to `asyncapi` Kafka streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) #### when[].api-id diff --git a/src/reference/config/bindings/asyncapi/README.md b/src/reference/config/bindings/asyncapi/README.md index 522b93ea..95c124ee 100644 --- a/src/reference/config/bindings/asyncapi/README.md +++ b/src/reference/config/bindings/asyncapi/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: asyncapi -description: Zilla runtime asyncapi binding category: - Binding tag: diff --git a/src/reference/config/bindings/echo/README.md b/src/reference/config/bindings/echo/README.md index 08fac160..7ab60088 100644 --- a/src/reference/config/bindings/echo/README.md +++ b/src/reference/config/bindings/echo/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: echo -description: Zilla runtime echo binding category: - Binding tag: diff --git a/src/reference/config/bindings/fan/README.md b/src/reference/config/bindings/fan/README.md index aed1990a..2c88dbe2 100644 --- a/src/reference/config/bindings/fan/README.md +++ b/src/reference/config/bindings/fan/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: fan -description: Zilla runtime fan binding category: - Binding tag: diff --git a/src/reference/config/bindings/filesystem/README.md b/src/reference/config/bindings/filesystem/README.md index 8e5309a7..d1700f94 100644 --- a/src/reference/config/bindings/filesystem/README.md +++ b/src/reference/config/bindings/filesystem/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: filesystem -description: Zilla runtime filesystem binding category: - Binding tag: diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index 0b8431e8..9a085214 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -61,7 +61,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `grpc` request-response streams to `kafka` topic streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/grpc-kafka/README.md b/src/reference/config/bindings/grpc-kafka/README.md index 8853362c..a954f948 100644 --- a/src/reference/config/bindings/grpc-kafka/README.md +++ b/src/reference/config/bindings/grpc-kafka/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: grpc-kafka -description: Zilla runtime grpc-kafka binding category: - Binding tag: diff --git a/src/reference/config/bindings/grpc/.partials/options.md b/src/reference/config/bindings/grpc/.partials/options.md index 290a5daf..e69de29b 100644 --- a/src/reference/config/bindings/grpc/.partials/options.md +++ b/src/reference/config/bindings/grpc/.partials/options.md @@ -1,22 +0,0 @@ -### options - -> `object` - -`grpc`-specific options. - -```yaml -grpc_client: - type: grpc - kind: client - exit: http_client -``` - -#### options.services - -::: warning Deprecated -This property will be removed in a future release. To access '.proto' files from the filesystem, use the [filesystem](./../catalogs/catalog-filesystem.md) catalog instead. -::: - -> `array` of `string` - -Protobuf service definition filenames, typically with `.proto` filename extension. diff --git a/src/reference/config/bindings/grpc/README.md b/src/reference/config/bindings/grpc/README.md index 6ae7cbef..096c350c 100644 --- a/src/reference/config/bindings/grpc/README.md +++ b/src/reference/config/bindings/grpc/README.md @@ -4,7 +4,7 @@ dir: collapsible: false link: true shortTitle: grpc -description: Zilla runtime grpc binding + category: - Binding tag: diff --git a/src/reference/config/bindings/grpc/client.md b/src/reference/config/bindings/grpc/client.md index f0fd7d6d..9db17ad3 100644 --- a/src/reference/config/bindings/grpc/client.md +++ b/src/reference/config/bindings/grpc/client.md @@ -1,6 +1,5 @@ --- shortTitle: client -description: Zilla runtime grpc client binding category: - Binding tag: diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index c4f86fa1..178a53a4 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -1,6 +1,6 @@ --- shortTitle: server -description: Zilla runtime grpc server binding + category: - Binding tag: diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md index 7e30179e..a85c6edb 100644 --- a/src/reference/config/bindings/http-filesystem/.partials/routes.md +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -31,7 +31,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `http` data streams into `filesystem` data streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/http-filesystem/README.md b/src/reference/config/bindings/http-filesystem/README.md index 499d036e..7cc67d4e 100644 --- a/src/reference/config/bindings/http-filesystem/README.md +++ b/src/reference/config/bindings/http-filesystem/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: http-filesystem -description: Zilla runtime http-filesystem binding category: - Binding tag: diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index 3f6e34a5..1bbc8df8 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -81,7 +81,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `http` request-response streams to `kafka` topic streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/http-kafka/README.md b/src/reference/config/bindings/http-kafka/README.md index 461a9279..89bba73c 100644 --- a/src/reference/config/bindings/http-kafka/README.md +++ b/src/reference/config/bindings/http-kafka/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: http-kafka -description: Zilla runtime http-kafka binding category: - Binding tag: diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 32084acb..8a710438 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -11,7 +11,7 @@ Enforce validation for the request content. #### content.model -> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] A schema or type to validate the request content. @@ -21,6 +21,10 @@ A schema or type to validate the request content. +#### requests[].headers + +> `string` + #### requests[].headers > `string` @@ -44,17 +48,23 @@ A schema or type to validate the request content. Enforce validation for path +#### path.model + +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] + #### params.query > `object` of a named [`model`](../models/) Enforce validation for query -#### requests[].path +#### query.model -> `string` +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +#### requests[].path +> `string` #### requests[].responses @@ -71,8 +81,6 @@ Enforce validation for query > `array` of `string` - - #### responses[].headers > `map` of "name: [model](../models/)" properties @@ -82,10 +90,14 @@ Enforce validation for response headers. ```yaml headers: my-header: - type: string + model: string maxLength: 100 ``` +#### headers.model + +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] + #### responses[].status > `string` diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index 8f3848fd..444cfdab 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -31,7 +31,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/http/README.md b/src/reference/config/bindings/http/README.md index 25bc2f16..52d4a932 100644 --- a/src/reference/config/bindings/http/README.md +++ b/src/reference/config/bindings/http/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: http -description: Zilla runtime http binding category: - Binding tag: @@ -23,7 +22,7 @@ The `server` kind `http` binding decodes `HTTP/1.1` protocol or `HTTP/2` protoco Cross-Origin Resource Sharing (CORS) is supported by specifying an access control policy of `cross-origin`. Further configuration allows for finer-grained access control including specific request origins, methods and headers allowed, and specific response headers exposed. -Authorization is enforced by a [`guard`](../../config/overview.md#guards) and the credentials can be extracted from a cookie, header or query parameter. +Authorization is enforced by a [`guard`](../../../config/overview.md#guards) and the credentials can be extracted from a cookie, header or query parameter. Conditional routes based on `http` request headers are used to route these application streams to an `exit` binding. diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index b92d4f4d..ccd03e8d 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -8,7 +8,7 @@ The http server binding decodes `HTTP/1.1` protocol or `HTTP/2` protocol on the Cross-Origin Resource Sharing (CORS) is supported by specifying an access control policy of `cross-origin`. Further configuration allows for finer-grained access control including specific request origins, methods and headers allowed, and specific response headers exposed. -Authorization is enforced by a [`guard`](../../config/overview.md#guards) and the credentials can be extracted from a cookie, header or query parameter. +Authorization is enforced by a [`guard`](../../../config/overview.md#guards) and the credentials can be extracted from a cookie, header or query parameter. Conditional routes based on `http` request headers are used to route these application streams to an `exit` binding. diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index 479d7629..e2cd8028 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -37,7 +37,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `kafka` topic streams to `grpc` request-response streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/kafka-grpc/README.md b/src/reference/config/bindings/kafka-grpc/README.md index e2a90890..a6b4813d 100644 --- a/src/reference/config/bindings/kafka-grpc/README.md +++ b/src/reference/config/bindings/kafka-grpc/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: kafka-grpc -description: Zilla runtime kafka-grpc binding category: - Binding tag: diff --git a/src/reference/config/bindings/kafka-proxy/README.md b/src/reference/config/bindings/kafka-proxy/README.md index f1ad76be..a6a3db06 100644 --- a/src/reference/config/bindings/kafka-proxy/README.md +++ b/src/reference/config/bindings/kafka-proxy/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: kafka-proxy -description: Zilla runtime kafka-proxy binding icon: aky-zilla-plus category: - Binding diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index b0ae9100..c85757af 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -22,7 +22,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) #### when[].topic\* diff --git a/src/reference/config/bindings/kafka/README.md b/src/reference/config/bindings/kafka/README.md index 8786fe97..b9315433 100644 --- a/src/reference/config/bindings/kafka/README.md +++ b/src/reference/config/bindings/kafka/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: kafka -description: Zilla runtime kafka binding category: - Binding tag: @@ -15,17 +14,7 @@ tag: Defines a binding with `kafka` protocol support, with `cache_client`, `cache_server` or `client` behavior. -## cache_client - -> [Full config](./cache_client.md) - -```yaml {3} - -``` - -## cache_server - -> [Full config](./cache_server.md) +## Cache Behavior The `cache_client` and `cache_server` kinds combine to provide a persistent cache of `kafka` messages per `topic` `partition` honoring the `kafka` `topic` configuration for message expiration and compaction. Messages ordering is guaranteed per `partition` and messages are merged into a unified stream for the `topic` spanning all `partitions`. @@ -41,6 +30,18 @@ When the `kafka` `topic` is not compacted, then the binding can be configured to The `cache_client` and `cache_server` also combine to provide a staging area when producing new messages as `kafka` requires exact message length up front when producing new messages and `kafka` does not support producing multiple messages in parallel over the same network connection. +## cache_client + +> [Full config](./cache_client.md) + +```yaml {3} + +``` + +## cache_server + +> [Full config](./cache_server.md) + ```yaml {3} ``` diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md index 2547b887..862530db 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -34,7 +34,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route when adapting `mqtt` topic streams to `kafka` topic streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/mqtt-kafka/README.md b/src/reference/config/bindings/mqtt-kafka/README.md index edd40d85..eecbb2ee 100644 --- a/src/reference/config/bindings/mqtt-kafka/README.md +++ b/src/reference/config/bindings/mqtt-kafka/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: mqtt-kafka -description: Zilla runtime mqtt-kafka binding category: - Binding tag: diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index 344e6e62..46526e2b 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -22,7 +22,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/mqtt/README.md b/src/reference/config/bindings/mqtt/README.md index 4331637f..6cf730a4 100644 --- a/src/reference/config/bindings/mqtt/README.md +++ b/src/reference/config/bindings/mqtt/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: mqtt -description: Zilla runtime mqtt binding category: - Binding tag: diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 4668ad80..8054f2f0 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -75,7 +75,7 @@ Enforce validation for content #### content.model -> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] A schema or type to validate the request content. @@ -88,11 +88,13 @@ Enforce validation for user provided properties ```yaml user-properties: my-app-prop: - type: integer - minimum: 0 - maximum: 100 + model: int32 + range: 0-100 ``` +#### user-properties.model + +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md index b3db82ca..d33759d2 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -22,7 +22,7 @@ routes: > `array` of `object` List of conditions to match this route when adapting `openapi` request-response streams to `asyncapi` streams. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) #### when[].api-id diff --git a/src/reference/config/bindings/openapi-asyncapi/README.md b/src/reference/config/bindings/openapi-asyncapi/README.md index dd5949f2..85d9bdc5 100644 --- a/src/reference/config/bindings/openapi-asyncapi/README.md +++ b/src/reference/config/bindings/openapi-asyncapi/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: openapi-asyncapi -description: Zilla runtime openapi-asyncapi binding category: - Binding tag: diff --git a/src/reference/config/bindings/openapi/README.md b/src/reference/config/bindings/openapi/README.md index 3776b4df..6202c493 100644 --- a/src/reference/config/bindings/openapi/README.md +++ b/src/reference/config/bindings/openapi/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: openapi -description: Zilla runtime openapi binding category: - Binding tag: diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index 9abc5aa9..e261abaa 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -32,7 +32,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) #### when[].transport diff --git a/src/reference/config/bindings/proxy/README.md b/src/reference/config/bindings/proxy/README.md index 4141bc9b..5b585cfb 100644 --- a/src/reference/config/bindings/proxy/README.md +++ b/src/reference/config/bindings/proxy/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: proxy -description: Zilla runtime proxy binding category: - Binding tag: diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md index a81ee1e5..09171851 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/routes.md +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -33,7 +33,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/sse-kafka/README.md b/src/reference/config/bindings/sse-kafka/README.md index 445ef92b..14f4836a 100644 --- a/src/reference/config/bindings/sse-kafka/README.md +++ b/src/reference/config/bindings/sse-kafka/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: sse-kafka -description: Zilla runtime sse-kafka binding category: - Binding tag: diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index 63821452..92ca4be4 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -35,6 +35,6 @@ Enforce validation for the request content. #### content.model -> `model` [ [`avro`](../../models/model-avro.md), [`json`](../../models/model-avro.md), [`protobuf`](../../models/model-protobuf.md), [`string`](../../models/model-string.md), [`integer`](../../models/model-integer.md) ] +> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] A schema or type to validate the request content. diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md index 15253b8f..fc978049 100644 --- a/src/reference/config/bindings/sse/.partials/routes.md +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -32,7 +32,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/sse/README.md b/src/reference/config/bindings/sse/README.md index 1e00f6fb..7143e32a 100644 --- a/src/reference/config/bindings/sse/README.md +++ b/src/reference/config/bindings/sse/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: sse -description: Zilla runtime sse binding category: - Binding tag: diff --git a/src/reference/config/bindings/tcp/.partials/routes.md b/src/reference/config/bindings/tcp/.partials/routes.md index e6f328bd..4d0a2fe0 100644 --- a/src/reference/config/bindings/tcp/.partials/routes.md +++ b/src/reference/config/bindings/tcp/.partials/routes.md @@ -9,7 +9,7 @@ List of roles required by each named guard to authorize this route. > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) #### when[].authority diff --git a/src/reference/config/bindings/tcp/README.md b/src/reference/config/bindings/tcp/README.md index f999c653..88a62518 100644 --- a/src/reference/config/bindings/tcp/README.md +++ b/src/reference/config/bindings/tcp/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: tcp -description: Zilla runtime tcp binding category: - Binding tag: diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index 8cc805f3..4e1197ec 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -29,7 +29,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/tls/README.md b/src/reference/config/bindings/tls/README.md index da482a10..4dbe11dd 100644 --- a/src/reference/config/bindings/tls/README.md +++ b/src/reference/config/bindings/tls/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: tls -description: Zilla runtime tls binding category: - Binding tag: diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index 177f2b45..7627b461 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -29,7 +29,7 @@ routes: > `array` of `object` List of conditions (any match) to match this route. -Read more: [When a route matches](../../../../concepts/bindings.md#when-a-route-matches) +Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) ```yaml routes: diff --git a/src/reference/config/bindings/ws/README.md b/src/reference/config/bindings/ws/README.md index 3d723a3a..34328531 100644 --- a/src/reference/config/bindings/ws/README.md +++ b/src/reference/config/bindings/ws/README.md @@ -4,7 +4,6 @@ dir: collapsible: false link: true shortTitle: ws -description: Zilla runtime ws binding category: - Binding tag: diff --git a/src/reference/config/catalogs/.templates/schema-registry-config.md b/src/reference/config/catalogs/.partials/options-schema-registry.md similarity index 100% rename from src/reference/config/catalogs/.templates/schema-registry-config.md rename to src/reference/config/catalogs/.partials/options-schema-registry.md diff --git a/src/reference/config/catalogs/catalog-apicurio-registry.md b/src/reference/config/catalogs/apicurio-registry.md similarity index 82% rename from src/reference/config/catalogs/catalog-apicurio-registry.md rename to src/reference/config/catalogs/apicurio-registry.md index b78538d0..80cf28c5 100644 --- a/src/reference/config/catalogs/catalog-apicurio-registry.md +++ b/src/reference/config/catalogs/apicurio-registry.md @@ -1,13 +1,14 @@ --- +redirectFrom: /reference/config/catalogs/catalog-apicurio-registry.html shortTitle: apicurio-registry -description: Zilla runtime apicurio-registry catalog + category: - Catalog --- # apicurio-registry Catalog -Zilla runtime apicurio-registry catalog. +Defines a catalog with schemas, AsyncAPI/OpenAPI definitions pulled from a remote registry to enforce validation or create APIs. Accepted `type` aliases: `apicurio` @@ -23,10 +24,6 @@ catalog: ## Configuration (\* required) -### type: apicurio-registry\* - -Defines a catalog with schemas, AsyncAPI/OpenAPI definitions pulled from a remote registry to enforce validation or create APIs. - ### options > `object` @@ -54,3 +51,10 @@ Use global or content identifier for resolving schemas in Apicurio. > `enum` [ "default", "legacy" ] | Default: `"default"` Store identifiers as Apicurio default 8-byte long or legacy 4-byte integer. + +#### options.max-age + +> `integer` | Default: `300` + +The maximum duration in seconds to keep a cached schema before fetching the schema again. + diff --git a/src/reference/config/catalogs/catalog-aws-glue.md b/src/reference/config/catalogs/aws-glue.md similarity index 81% rename from src/reference/config/catalogs/catalog-aws-glue.md rename to src/reference/config/catalogs/aws-glue.md index 8c9daa29..50a7c41c 100644 --- a/src/reference/config/catalogs/catalog-aws-glue.md +++ b/src/reference/config/catalogs/aws-glue.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/catalogs/catalog-aws-glue.html shortTitle: aws-glue -description: Zilla runtime aws-glue catalog + icon: aky-zilla-plus category: - Catalog @@ -8,11 +9,11 @@ category: # aws-glue Catalog +Zilla runtime aws-glue catalog supports the official [AWS Glue](https://aws.amazon.com/glue/) registry. It defines a catalog that can fetch schemas [AWS Glue](https://aws.amazon.com/glue/) to enforce validation. + [Available in ](https://www.aklivity.io/products/zilla-plus) {.zilla-plus-badge .hint-container .info} -Zilla runtime aws-glue catalog supports the official [AWS Glue](https://aws.amazon.com/glue/) registry. - ```yaml {2} catalog: type: aws-glue @@ -24,10 +25,6 @@ catalog: ## Configuration (\* required) -### type: aws-glue\* - -Defines a catalog that can fetch schemas [AWS Glue](https://aws.amazon.com/glue/) to enforce validation. - ### options > `object` diff --git a/src/reference/config/catalogs/catalog-karapace-schema-registry.md b/src/reference/config/catalogs/catalog-karapace-schema-registry.md deleted file mode 100644 index 702bb0f4..00000000 --- a/src/reference/config/catalogs/catalog-karapace-schema-registry.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -shortTitle: karapace-schema-registry -description: Zilla runtime karapace-schema-registry catalog -category: - - Catalog ---- - -# karapace-schema-registry Catalog - -Zilla runtime karapace-schema-registry catalog - -Accepted `type` aliases: `karapace` - -```yaml {2} -catalog: - type: karapace-schema-registry - options: - url: http://reg.example.com:8081 - context: default -``` - -## Configuration (\* required) - -### type: karapace-schema-registry\* - -Defines a catalog with a schema pulled from a remote schema registry to enforce validation. - -### options - -> `object` - -#### options.url\* - -> `string` - -Karapace Schema Registry URL to access schemas via API calls. - -#### options.context - -> `string` | Default: `"default"` - -Schema context represents an independent scope in the Karapace schema registry. diff --git a/src/reference/config/catalogs/catalog-schema-registry.md b/src/reference/config/catalogs/catalog-schema-registry.md deleted file mode 100644 index f0b329a5..00000000 --- a/src/reference/config/catalogs/catalog-schema-registry.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -shortTitle: schema-registry -description: Zilla runtime schema-registry catalog -category: - - Catalog ---- - -# schema-registry Catalog - -Zilla runtime schema-registry catalog. - -```yaml {2} -catalog: - type: schema-registry - options: - url: http://reg.example.com:8081 - context: default -``` - -## Configuration (\* required) - -### type: schema-registry\* - -Defines a catalog with a schema pulled from a remote schema registry to enforce validation. - -### options - -> `object` - -#### options.url\* - -> `string` - -Schema Registry URL to access schemas via API calls. - -#### options.context - -> `string` | Default: `"default"` - -Schema context represents an independent scope in the Schema Registry. diff --git a/src/reference/config/catalogs/catalog-confluent-schema-registry.md b/src/reference/config/catalogs/confluent-schema-registry.md similarity index 64% rename from src/reference/config/catalogs/catalog-confluent-schema-registry.md rename to src/reference/config/catalogs/confluent-schema-registry.md index 3de62375..d0e7910e 100644 --- a/src/reference/config/catalogs/catalog-confluent-schema-registry.md +++ b/src/reference/config/catalogs/confluent-schema-registry.md @@ -1,6 +1,6 @@ --- +redirectFrom: /reference/config/catalogs/catalog-confluent-schema-registry.html shortTitle: confluent-schema-registry -description: Zilla runtime confluent-schema-registry catalog icon: aky-zilla-plus category: - Catalog @@ -8,11 +8,13 @@ category: # confluent-schema-registry Catalog -[Available in ](https://www.aklivity.io/products/zilla-plus) -{.zilla-plus-badge .hint-container .info} +Defines a catalog with a schema pulled from a remote schema registry to enforce validation. Zilla runtime confluent-schema-registry catalog supports the official [Confluent](https://docs.confluent.io/platform/current/schema-registry/index.html) schema registry. +[Available in ](https://www.aklivity.io/products/zilla-plus) +{.zilla-plus-badge .hint-container .info} + ```yaml {2} catalog: type: confluent-schema-registry @@ -23,28 +25,4 @@ catalog: ## Configuration (\* required) -### type: confluent-schema-registry\* - -Defines a catalog with a schema pulled from a remote schema registry to enforce validation. - -### options - -> `object` - -#### options.url\* - -> `string` - -Schema Registry URL to access schemas via API calls. - -#### options.context - -> `string` | Default: `"default"` - -Schema context represents an independent scope in the Schema Registry. - ---- - -::: right -\* required -::: + diff --git a/src/reference/config/catalogs/catalog-filesystem.md b/src/reference/config/catalogs/filesystem.md similarity index 87% rename from src/reference/config/catalogs/catalog-filesystem.md rename to src/reference/config/catalogs/filesystem.md index 22b0c7f7..535b14b1 100644 --- a/src/reference/config/catalogs/catalog-filesystem.md +++ b/src/reference/config/catalogs/filesystem.md @@ -1,13 +1,13 @@ --- +redirectFrom: /reference/config/catalogs/catalog-filesystem.html shortTitle: filesystem -description: Zilla runtime filesystem catalog category: - Catalog --- # filesystem Catalog -Zilla runtime filesystem catalog. +Defines a catalog with schemas, AsyncAPI/OpenAPI definitions or proto files pulled from the filesystem relative `zilla.yaml` to enforce validation, create APIs or gRPC services. ```yaml {2} catalogs: @@ -21,10 +21,6 @@ catalogs: ## Configuration (\* required) -### type: filesystem\* - -Defines a catalog with schemas, AsyncAPI/OpenAPI definitions or proto files pulled from the filesystem relative `zilla.yaml` to enforce validation, create APIs or gRPC services. - ### options > `object` diff --git a/src/reference/config/catalogs/catalog-inline.md b/src/reference/config/catalogs/inline.md similarity index 91% rename from src/reference/config/catalogs/catalog-inline.md rename to src/reference/config/catalogs/inline.md index d6f5f854..1c44533d 100644 --- a/src/reference/config/catalogs/catalog-inline.md +++ b/src/reference/config/catalogs/inline.md @@ -1,13 +1,13 @@ --- +redirectFrom: /reference/config/catalogs/catalog-inline.html shortTitle: inline -description: Zilla runtime inline catalog category: - Catalog --- # inline Catalog -Zilla runtime inline catalog. +Defines a catalog with schemas to enforce validation. The schemas are defined inline with the other properties. ```yaml {2} catalog: @@ -35,10 +35,6 @@ catalog: ## Configuration (\* required) -### type: inline\* - -Defines a catalog with schemas to enforce validation. The schemas are defined inline with the other properties. - ### options > `object` diff --git a/src/reference/config/catalogs/karapace-schema-registry.md b/src/reference/config/catalogs/karapace-schema-registry.md new file mode 100644 index 00000000..d006eb41 --- /dev/null +++ b/src/reference/config/catalogs/karapace-schema-registry.md @@ -0,0 +1,25 @@ +--- +redirectFrom: /reference/config/catalogs/catalog-karapace-schema-registry.html +shortTitle: karapace-schema-registry + +category: + - Catalog +--- + +# karapace-schema-registry Catalog + +Defines a catalog with a schema pulled from a remote schema registry to enforce validation. + +Accepted `type` aliases: `karapace` + +```yaml {2} +catalog: + type: karapace-schema-registry + options: + url: http://reg.example.com:8081 + context: default +``` + +## Configuration (\* required) + + diff --git a/src/reference/config/catalogs/schema-registry.md b/src/reference/config/catalogs/schema-registry.md new file mode 100644 index 00000000..f01f2c3c --- /dev/null +++ b/src/reference/config/catalogs/schema-registry.md @@ -0,0 +1,22 @@ +--- +redirectFrom: /reference/config/catalogs/catalog-schema-registry.html +shortTitle: schema-registry +category: + - Catalog +--- + +# schema-registry Catalog + +Defines a catalog with a schema pulled from a remote schema registry to enforce validation. + +```yaml {2} +catalog: + type: schema-registry + options: + url: http://reg.example.com:8081 + context: default +``` + +## Configuration (\* required) + + diff --git a/src/reference/config/guards/guard-jwt.md b/src/reference/config/guards/jwt.md similarity index 96% rename from src/reference/config/guards/guard-jwt.md rename to src/reference/config/guards/jwt.md index 97d6715d..1680ae15 100644 --- a/src/reference/config/guards/guard-jwt.md +++ b/src/reference/config/guards/jwt.md @@ -1,6 +1,6 @@ --- +redirectFrom: /reference/config/guards/guard-jwt.html shortTitle: jwt -description: Zilla runtime jwt guard category: - Binding tag: @@ -9,7 +9,11 @@ tag: # jwt Guard -Zilla runtime jwt guard. +Defines a guard with `JSON Web Token (JWT)` support. + +The `jwt` guard uses public keys to verify the integrity of `JWT` access tokens when identifying authorized subjects and their associated roles scope. The token issuer and audience can also be constrained to prevent access tokens from other applications from being reused inappropriately. + +Each verified JWT access token has an expiration time, and an optional challenge window prior to the expiration time that can be used by specific protocol bindings to send a challenge to renew the access token before it expires. If using an Identity Provider that exposes a `.well-known/jwks.json` file, simply provide the `issuer` and `audience`. The JWKS will be fetched, remotely. @@ -48,14 +52,6 @@ guards: ## Configuration (\* required) -### type: jwt\* - -Defines a guard with `JSON Web Token (JWT)` support. - -The `jwt` guard uses public keys to verify the integrity of `JWT` access tokens when identifying authorized subjects and their associated roles scope. The token issuer and audience can also be constrained to prevent access tokens from other applications from being reused inappropriately. - -Each verified JWT access token has an expiration time, and an optional challenge window prior to the expiration time that can be used by specific protocol bindings to send a challenge to renew the access token before it expires. - ### options > `object` @@ -141,8 +137,3 @@ If not provided, relies on the `issuer` to infer the location of a remote `.well ::: ---- - -::: right -\* required -::: diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index 27834d17..a21d3557 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -5,27 +5,21 @@ To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. > `id` -> `record` ----- > `strategy` > `version` -> `record` ----- > `subject` > `version` -> `record` - -#### catalog.strategy - -> `enum` [ "topic" ] - -To determine the subject based on the specified strategy +----- +> `schema` +> `version` -#### catalog.subject +#### catalog.id -> `string` +> `integer` -Unique identifier for schema categorization in the catalog. +Define specific schema id to refer from catalog. #### catalog.version @@ -33,14 +27,18 @@ Unique identifier for schema categorization in the catalog. Specific iteration or version of a registered schema in the defined catalog. -#### catalog.id +#### catalog.strategy -> `integer` +> `enum` [ "topic" ] -Define specific schema id to refer from catalog. +To determine the subject based on the specified strategy -#### catalog.record\* +#### catalog.subject > `string` -Define specific record to refer from the schema. +Unique identifier for schema categorization in the catalog. + +#### catalog.schema + +> `string` diff --git a/src/reference/config/models/.partials/number.md b/src/reference/config/models/.partials/number.md new file mode 100644 index 00000000..7c60adf0 --- /dev/null +++ b/src/reference/config/models/.partials/number.md @@ -0,0 +1,11 @@ +### format + +> `enum` [ "binary", "text" ] | Default: `"text"` + +### range + +> `string` | Pattern: "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" + +### multiple + +> `integer` diff --git a/src/reference/config/models/model-avro.md b/src/reference/config/models/avro.md similarity index 87% rename from src/reference/config/models/model-avro.md rename to src/reference/config/models/avro.md index 00a02b16..aff5cd12 100644 --- a/src/reference/config/models/model-avro.md +++ b/src/reference/config/models/avro.md @@ -1,13 +1,14 @@ --- +redirectFrom: /reference/config/models/model-avro.html shortTitle: avro -description: Zilla runtime avro model + category: - Models --- # avro model -Zilla runtime avro model +Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. ```yaml {1} model: avro @@ -25,7 +26,7 @@ catalog: ### model: avro\* -Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. +Specifies the model is `avro`. ### view diff --git a/src/reference/config/models/double.md b/src/reference/config/models/double.md new file mode 100644 index 00000000..14063b80 --- /dev/null +++ b/src/reference/config/models/double.md @@ -0,0 +1,21 @@ +--- +shortTitle: double +category: + - Models +--- + +# double Model + +Defines a model to enforce validation for double data. + +```yaml {1} +model: double +``` + +## Configuration (\* required) + +### model: double\* + +Specifies the model is a `double`. + + diff --git a/src/reference/config/models/float.md b/src/reference/config/models/float.md new file mode 100644 index 00000000..faa7e8e0 --- /dev/null +++ b/src/reference/config/models/float.md @@ -0,0 +1,21 @@ +--- +shortTitle: float +category: + - Models +--- + +# float Model + +Defines a model to enforce validation for float data. + +```yaml {1} +model: float +``` + +## Configuration (\* required) + +### model: float\* + +Specifies the model is a `float`. + + diff --git a/src/reference/config/models/int32.md b/src/reference/config/models/int32.md new file mode 100644 index 00000000..7d8dfe8e --- /dev/null +++ b/src/reference/config/models/int32.md @@ -0,0 +1,22 @@ +--- +redirectFrom: /reference/config/models/model-integer.html +shortTitle: int32 +category: + - Models +--- + +# integer Model + +Defines a model to enforce validation for int32 data. + +```yaml {1} +model: int32 +``` + +## Configuration (\* required) + +### model: int32\* + +Specifies the model is a `int32`. + + diff --git a/src/reference/config/models/int64.md b/src/reference/config/models/int64.md new file mode 100644 index 00000000..e970fe2c --- /dev/null +++ b/src/reference/config/models/int64.md @@ -0,0 +1,21 @@ +--- +shortTitle: int64 +category: + - Models +--- + +# int64 Model + +Defines a model to enforce validation for int64 data. + +```yaml {1} +model: int64 +``` + +## Configuration (\* required) + +### model: int64\* + +Specifies the model is a `int64`. + + diff --git a/src/reference/config/models/model-json.md b/src/reference/config/models/json.md similarity index 83% rename from src/reference/config/models/model-json.md rename to src/reference/config/models/json.md index 823f3b66..2c7bfae4 100644 --- a/src/reference/config/models/model-json.md +++ b/src/reference/config/models/json.md @@ -1,13 +1,14 @@ --- +redirectFrom: /reference/config/models/model-json.html shortTitle: json -description: Zilla runtime json model + category: - Models --- # json Model -Zilla runtime json model +Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. ```yaml {1} model: json @@ -24,6 +25,6 @@ catalog: ### model: json\* -Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. +Specifies the model is `json`. diff --git a/src/reference/config/models/model-integer.md b/src/reference/config/models/model-integer.md deleted file mode 100644 index 4743e17d..00000000 --- a/src/reference/config/models/model-integer.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -shortTitle: integer -description: Zilla runtime integer model -category: - - Models ---- - -# integer Model - -Zilla runtime integer model - -```yaml {1} -model: integer -``` - -## Configuration (\* required) - -### model: integer\* - -Defines a model to enforce validation for integer data. diff --git a/src/reference/config/models/model-protobuf.md b/src/reference/config/models/protobuf.md similarity index 84% rename from src/reference/config/models/model-protobuf.md rename to src/reference/config/models/protobuf.md index 317566b6..16148550 100644 --- a/src/reference/config/models/model-protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -1,13 +1,13 @@ --- +redirectFrom: /reference/config/models/model-protobuf.html shortTitle: protobuf -description: Zilla runtime protobuf model category: - Models --- # protobuf Model -Zilla runtime protobuf model +Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. ```yaml {1} model: protobuf @@ -26,9 +26,11 @@ catalog: ## Configuration (\* required) -### type: protobuf\* +### model: protobuf\* -Defines a model to utilize schema from catalog to enforce validation, ensuring adherence to predefined data structures. +> `string` + +Specifies the model is a `protobuf`. ### view @@ -52,6 +54,22 @@ To map defined catalog for schema retrieval based on catalog specific parameters > `subject` > `version` > `record` +----- +> `schema` +> `version` +> `record` + +#### catalog.id + +> `integer` + +Define specific schema id to refer from catalog. + +#### catalog.version + +> `string` | Default: `"latest"` + +Specific iteration or version of a registered schema in the defined catalog. #### catalog.strategy @@ -65,17 +83,11 @@ To determine the subject based on the specified strategy Unique identifier for schema categorization in the catalog. -#### catalog.version - -> `string` | Default: `"latest"` +#### catalog.schema -Specific iteration or version of a registered schema in the defined catalog. - -#### catalog.id - -> `integer` +> `string` -Define specific schema id to refer from catalog. +Unique identifier for schema categorization in the catalog. #### catalog.record\* diff --git a/src/reference/config/models/model-string.md b/src/reference/config/models/string.md similarity index 85% rename from src/reference/config/models/model-string.md rename to src/reference/config/models/string.md index 4aa07681..72edf923 100644 --- a/src/reference/config/models/model-string.md +++ b/src/reference/config/models/string.md @@ -1,19 +1,20 @@ --- +redirectFrom: /reference/config/models/model-string.html shortTitle: string -description: Zilla runtime string model + category: - Models --- # string Model -Zilla runtime string model +Defines a model to enforce validation for string data. ## Configuration (\* required) ### model: string\* -Defines a model to enforce validation for string data. +Specifies the model is a `string`. ```yaml {1} model: string diff --git a/src/reference/config/telemetry/events.md b/src/reference/config/telemetry/events.md index 5d459c41..3ee4fe8c 100644 --- a/src/reference/config/telemetry/events.md +++ b/src/reference/config/telemetry/events.md @@ -1,6 +1,5 @@ --- shortTitle: Events -description: Zilla runtime telemetry events category: - Telemetry tag: @@ -79,7 +78,7 @@ An MQTT session was successfully authorized and connected. ### BINDING_MQTT_KAFKA_NON_COMPACT_SESSIONS_TOPIC -The sessions topic declared in the [mqtt-kafka](../bindings/binding-mqtt-kafka.md) is required to be log compacted. +The sessions topic declared in the [mqtt-kafka](../bindings/mqtt-kafka/) is required to be log compacted. ### BINDING_TCP_DNS_FAILED diff --git a/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md b/src/reference/config/telemetry/exporters/aws-cloudwatch.md similarity index 88% rename from src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md rename to src/reference/config/telemetry/exporters/aws-cloudwatch.md index 81beb59b..a5a99498 100644 --- a/src/reference/config/telemetry/exporters/exporter-aws-cloudwatch.md +++ b/src/reference/config/telemetry/exporters/aws-cloudwatch.md @@ -1,6 +1,7 @@ --- -shortTitle: aws cloudwatch -description: Zilla runtime aws cloudwatch exporter +redirectFrom: /reference/config/telemetry/exporters/exporter-aws-cloudwatch.html +shortTitle: aws-cloudwatch + icon: aky-zilla-plus - Telemetry tag: @@ -9,10 +10,11 @@ tag: # aws-cloudwatch Exporter +Specifies an exporter for transmitting Custom Metrics and Log Events to AWS CloudWatch. + [Available in ](https://www.aklivity.io/products/zilla-plus) {.zilla-plus-badge .hint-container .info} -Zilla runtime aws cloudwatch exporter. ```yaml {3} exporters: @@ -29,10 +31,6 @@ exporters: ## Configuration (\* required) -### type: aws-cloudwatch\* - -Specifies an exporter for transmitting Custom Metrics and Log Events to AWS CloudWatch. - ### options > `object` @@ -87,8 +85,3 @@ The name of the log group. The name of the log stream. ---- - -::: right -\* required -::: diff --git a/src/reference/config/telemetry/exporters/exporter-otlp.md b/src/reference/config/telemetry/exporters/otlp.md similarity index 77% rename from src/reference/config/telemetry/exporters/exporter-otlp.md rename to src/reference/config/telemetry/exporters/otlp.md index 7534f96f..b0ab5166 100644 --- a/src/reference/config/telemetry/exporters/exporter-otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/telemetry/exporters/exporter-otlp.html shortTitle: otlp -description: Zilla runtime otlp exporter + category: - Telemetry tag: @@ -63,18 +64,22 @@ Contains details for the OpenTelemetry Protocol collector endpoint. #### endpoint.protocol -> `string` +> `enum` [ "http" ] | Default: `"http"` -Specifies the protocol to use for exporting data. Currently only `http` is supported. The default is `http`. +Specifies the protocol to use for exporting data for exporting data to the [OTEL Collector](https://opentelemetry.io/docs/collector/). #### endpoint.location\* > `string` -The URL of the collector. +#### endpoint.overrides ---- +> `object` + +#### overrides.logs -::: right -\* required -::: +> `string` + +#### overrides.metrics + +> `string` diff --git a/src/reference/config/telemetry/exporters/exporter-prometheus.md b/src/reference/config/telemetry/exporters/prometheus.md similarity index 90% rename from src/reference/config/telemetry/exporters/exporter-prometheus.md rename to src/reference/config/telemetry/exporters/prometheus.md index 6826c265..e7f0bf5b 100644 --- a/src/reference/config/telemetry/exporters/exporter-prometheus.md +++ b/src/reference/config/telemetry/exporters/prometheus.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/telemetry/exporters/exporter-prometheus.html shortTitle: prometheus -description: Zilla runtime prometheus exporter + category: - Telemetry tag: @@ -62,8 +63,3 @@ URL port to accept for endpoint. URL path to accept for endpoint. ---- - -::: right -\* required -::: diff --git a/src/reference/config/telemetry/exporters/exporter-stdout.md b/src/reference/config/telemetry/exporters/stdout.md similarity index 75% rename from src/reference/config/telemetry/exporters/exporter-stdout.md rename to src/reference/config/telemetry/exporters/stdout.md index 252d509b..b6b6308c 100644 --- a/src/reference/config/telemetry/exporters/exporter-stdout.md +++ b/src/reference/config/telemetry/exporters/stdout.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/telemetry/exporters/exporter-stdout.html shortTitle: stdout -description: Zilla runtime stdout exporter + category: - Telemetry tag: diff --git a/src/reference/config/telemetry/exporters/exporter-syslog.md b/src/reference/config/telemetry/exporters/syslog.md similarity index 96% rename from src/reference/config/telemetry/exporters/exporter-syslog.md rename to src/reference/config/telemetry/exporters/syslog.md index e1aaeb13..85ba5526 100644 --- a/src/reference/config/telemetry/exporters/exporter-syslog.md +++ b/src/reference/config/telemetry/exporters/syslog.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/telemetry/exporters/exporter-syslog.html shortTitle: syslog -description: Zilla runtime syslog exporter + icon: aky-zilla-plus category: - Telemetry @@ -116,8 +117,3 @@ or an AWS vault for remote pem format certificates stored in AWS secrets manager Specifies if the CA certs should be trusted. Only valid if the protocol is `tls`. ---- - -::: right -\* required -::: diff --git a/src/reference/config/telemetry/metrics/metric-grpc.md b/src/reference/config/telemetry/metrics/grpc.md similarity index 94% rename from src/reference/config/telemetry/metrics/metric-grpc.md rename to src/reference/config/telemetry/metrics/grpc.md index 14b6dd70..f245b8d8 100644 --- a/src/reference/config/telemetry/metrics/metric-grpc.md +++ b/src/reference/config/telemetry/metrics/grpc.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/telemetry/metrics/metric-grpc.html shortTitle: grpc -description: Zilla runtime telemetry type + category: - Telemetry tag: @@ -82,8 +83,3 @@ The number of `grpc` request messages per RPC. The number of `grpc` response messages per RPC. ---- - -::: right -\* required -::: diff --git a/src/reference/config/telemetry/metrics/metric-http.md b/src/reference/config/telemetry/metrics/http.md similarity index 92% rename from src/reference/config/telemetry/metrics/metric-http.md rename to src/reference/config/telemetry/metrics/http.md index 8dcfb388..6c38cf22 100644 --- a/src/reference/config/telemetry/metrics/metric-http.md +++ b/src/reference/config/telemetry/metrics/http.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/telemetry/metrics/metric-http.html shortTitle: http -description: Zilla runtime telemetry type + category: - Telemetry tag: @@ -66,8 +67,3 @@ The `http` request content length in `bytes`. The `http` response content length in `bytes`. ---- - -::: right -\* required -::: diff --git a/src/reference/config/telemetry/metrics/metric-stream.md b/src/reference/config/telemetry/metrics/stream.md similarity index 96% rename from src/reference/config/telemetry/metrics/metric-stream.md rename to src/reference/config/telemetry/metrics/stream.md index d1d59dcf..92f69f82 100644 --- a/src/reference/config/telemetry/metrics/metric-stream.md +++ b/src/reference/config/telemetry/metrics/stream.md @@ -1,6 +1,7 @@ --- +redirectFrom: /reference/config/telemetry/metrics/metric-stream.html shortTitle: stream -description: Zilla runtime telemetry type + category: - Telemetry tag: @@ -114,8 +115,3 @@ The number of closed received streams. The number of closed sent streams. ---- - -::: right -\* required -::: diff --git a/src/reference/config/vaults/vault-aws.md b/src/reference/config/vaults/aws.md similarity index 93% rename from src/reference/config/vaults/vault-aws.md rename to src/reference/config/vaults/aws.md index 478cc409..8bb4b389 100644 --- a/src/reference/config/vaults/vault-aws.md +++ b/src/reference/config/vaults/aws.md @@ -1,6 +1,6 @@ --- +redirectFrom: /reference/config/vaults/vault-aws.html shortTitle: aws -description: Zilla runtime aws vault icon: aky-zilla-plus category: - Vault @@ -8,11 +8,13 @@ category: # aws Vault +Defines a vault remotely accessing AWS services from an EC2 instance. + +This is typically combined with `tls` binding `vault` property, referencing resources such as `secrets` by Amazon Resource Names (ARNs). + [Available in ](https://www.aklivity.io/products/zilla-plus) {.zilla-plus-badge .hint-container .info} -Zilla runtime aws vault. - ```yaml {2} server: type: aws @@ -26,12 +28,6 @@ server: ## Configuration (\* required) -### type: aws\* - -Defines a vault remotely accessing AWS services from an EC2 instance. - -This is typically combined with `tls` binding `vault` property, referencing resources such as `secrets` by Amazon Resource Names (ARNs). - ### options > `object` @@ -77,8 +73,3 @@ Endpoint URL override for AWS Secrets Manager API. Endpoint URL override for AWS Resource Groups Tagging API. ---- - -::: right -\* required -::: diff --git a/src/reference/config/vaults/vault-filesystem.md b/src/reference/config/vaults/filesystem.md similarity index 92% rename from src/reference/config/vaults/vault-filesystem.md rename to src/reference/config/vaults/filesystem.md index 66befd1d..6f8eee11 100644 --- a/src/reference/config/vaults/vault-filesystem.md +++ b/src/reference/config/vaults/filesystem.md @@ -1,13 +1,21 @@ --- +redirectFrom: /reference/config/vaults/vault-filesystem.html shortTitle: filesystem -description: Zilla runtime filesystem vault category: - Vault --- # filesystem Vault -Zilla runtime filesystem vault. +Defines a vault stored on the local filesystem. + +The `filesystem` vault uses `PKCS12` format to store signed certificates and keys. + +The [keys](#options-keys) option is used to identify the local peer in a TLS handshake. + +The [trust](#options-trust) option is used to verify identity of the remote peer in a TLS handshake. + +The [signers](#options-signers) option is used to challenge for mutual authentication in a TLS handshake. ```yaml {2} server: @@ -21,18 +29,6 @@ server: ## Configuration (\* required) -### type: filesystem\* - -Defines a vault stored on the local filesystem. - -The `filesystem` vault uses `PKCS12` format to store signed certificates and keys. - -The [keys](#options-keys) option is used to identify the local peer in a TLS handshake. - -The [trust](#options-trust) option is used to verify identity of the remote peer in a TLS handshake. - -The [signers](#options-signers) option is used to challenge for mutual authentication in a TLS handshake. - ### options > `object` @@ -122,8 +118,3 @@ defaults to `"pkcs12"` Keystore password. ---- - -::: right -\* required -::: From eb18cfd62858c71a077f14215806d2ad2cbe6ff9 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 26 Aug 2024 11:53:47 -0400 Subject: [PATCH 16/54] newest schema --- .check-schema/zilla-schema.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index c1ed0608..17daebea 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -3307,6 +3307,18 @@ "required": [ "exit" ] + }, + { + "properties": { + "routes": { + "required": [ + "exit" + ] + } + }, + "required": [ + "routes" + ] } ] }, @@ -3315,6 +3327,13 @@ "kind": { "const": "client" }, + "routes": { + "items": { + "properties": { + "exit": false + } + } + }, "exit": false } } From 1e13d588e12e2795d21267d6eb803f873420eb7d Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 26 Aug 2024 15:04:26 -0400 Subject: [PATCH 17/54] markdown lint --- package.json | 2 +- .../bindings/.partials/options-http-auth.md | 1 - .../bindings/.partials/options-kafka-sasl.md | 1 + .../bindings/asyncapi/.partials/routes.md | 1 - .../bindings/grpc-kafka/.partials/routes.md | 1 + .../bindings/http-kafka/.partials/routes.md | 1 + .../config/bindings/http/.partials/options.md | 18 +----------------- src/reference/config/bindings/http/server.md | 2 -- .../config/bindings/mqtt/.partials/options.md | 1 - src/reference/config/bindings/mqtt/server.md | 1 - .../openapi-asyncapi/.partials/options.md | 1 + .../config/bindings/openapi/README.md | 1 - .../config/bindings/proxy/.partials/routes.md | 1 - .../config/catalogs/apicurio-registry.md | 1 - src/reference/config/guards/jwt.md | 1 - .../telemetry/exporters/aws-cloudwatch.md | 2 -- .../config/telemetry/exporters/prometheus.md | 1 - .../config/telemetry/exporters/syslog.md | 1 - src/reference/config/telemetry/metrics/grpc.md | 1 - src/reference/config/telemetry/metrics/http.md | 1 - .../config/telemetry/metrics/stream.md | 1 - src/reference/config/vaults/aws.md | 1 - src/reference/config/vaults/filesystem.md | 1 - 23 files changed, 6 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 81a1b85c..0318f18e 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "dev": "vuepress-vite dev src", "update-package": "pnpm add -g pnpm && pnpm dlx vp-update", "lint": "markdownlint-cli2 \"**/*.md\" \"#node_modules\" \"#.config\" \"#.check-schema\"", - "lint-fix": "markdownlint-cli2 \"**/*.md\" \"#node_modules\" \"#.config\" \"#.check-schema\"", + "lint-fix": "markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\" \"#.config\" \"#.check-schema\"", "link-checker": "pnpm build && link-checker src/.vuepress/dist", "check-schema": "node ./.check-schema" }, diff --git a/src/reference/config/bindings/.partials/options-http-auth.md b/src/reference/config/bindings/.partials/options-http-auth.md index d90ed5cb..1dd9b848 100644 --- a/src/reference/config/bindings/.partials/options-http-auth.md +++ b/src/reference/config/bindings/.partials/options-http-auth.md @@ -21,4 +21,3 @@ Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"` > `map` of `name: value` properties Named query parameter value pattern with `{credentials}`. - diff --git a/src/reference/config/bindings/.partials/options-kafka-sasl.md b/src/reference/config/bindings/.partials/options-kafka-sasl.md index 72f4b27b..e80408fd 100644 --- a/src/reference/config/bindings/.partials/options-kafka-sasl.md +++ b/src/reference/config/bindings/.partials/options-kafka-sasl.md @@ -1,3 +1,4 @@ + #### sasl.mechanism > `enum` [ "plain", "scram-sha-1", "scram-sha-256", "scram-sha-512" ] diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md index b84dc6cf..42e38837 100644 --- a/src/reference/config/bindings/asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -54,7 +54,6 @@ AsyncAPI spec identifier that matches from `asyncapi` binding MQTT stream. AsyncAPI OperationId that can be mapped between AsyncAPI MQTT and AsyncAPI Kafka spec - #### routes[].with > `object` diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index 9a085214..05d90901 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -1,3 +1,4 @@ + ### routes > `array` of `object` diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index 1bbc8df8..24be66d4 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -1,3 +1,4 @@ + ### routes > `array` of `object` diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 8a710438..98736550 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -19,29 +19,18 @@ A schema or type to validate the request content. > `string` - - -#### requests[].headers - -> `string` - #### requests[].headers > `string` - - #### requests[].method -> `enum` [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ] - - +> `enum` [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ] #### requests[].params > `string` - #### params.path > `object` of a named [`model`](../models/) @@ -70,13 +59,10 @@ Enforce validation for query > `array` of `object` - #### responses[].content > `string` - - #### responses[].content-type > `array` of `string` @@ -102,12 +88,10 @@ headers: > `string` - #### options.versions Supported protocol versions. - #### options.overrides > `map` of `name: value` properties diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index ccd03e8d..1e073494 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -124,7 +124,6 @@ Exposed cross-origin response headers. Exposed response headers. - #### options.authorization > `object` as map of named objects @@ -141,7 +140,6 @@ authorization: - diff --git a/src/reference/config/bindings/mqtt/.partials/options.md b/src/reference/config/bindings/mqtt/.partials/options.md index 8b137891..e69de29b 100644 --- a/src/reference/config/bindings/mqtt/.partials/options.md +++ b/src/reference/config/bindings/mqtt/.partials/options.md @@ -1 +0,0 @@ - diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 8054f2f0..276c982f 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -12,7 +12,6 @@ The mqtt server binding ## Configuration (\* required) - ### options > `object` diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index 2fc4a4f8..bc1a6506 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -1,3 +1,4 @@ + ### options > `object` diff --git a/src/reference/config/bindings/openapi/README.md b/src/reference/config/bindings/openapi/README.md index 6202c493..e05f2365 100644 --- a/src/reference/config/bindings/openapi/README.md +++ b/src/reference/config/bindings/openapi/README.md @@ -34,4 +34,3 @@ The `client` kind `openapi` binding creates composite of `http`, `tls`, and `tcp ```yaml {3} ``` - diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index e261abaa..2502c2a8 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -126,7 +126,6 @@ Port number. > `string` - #### routes[].exit\* > `string` diff --git a/src/reference/config/catalogs/apicurio-registry.md b/src/reference/config/catalogs/apicurio-registry.md index 80cf28c5..2de405a8 100644 --- a/src/reference/config/catalogs/apicurio-registry.md +++ b/src/reference/config/catalogs/apicurio-registry.md @@ -57,4 +57,3 @@ Store identifiers as Apicurio default 8-byte long or legacy 4-byte integer. > `integer` | Default: `300` The maximum duration in seconds to keep a cached schema before fetching the schema again. - diff --git a/src/reference/config/guards/jwt.md b/src/reference/config/guards/jwt.md index 1680ae15..b0679ab5 100644 --- a/src/reference/config/guards/jwt.md +++ b/src/reference/config/guards/jwt.md @@ -136,4 +136,3 @@ If not provided, relies on the `issuer` to infer the location of a remote `.well > "EC" point Y coordinate. ::: - diff --git a/src/reference/config/telemetry/exporters/aws-cloudwatch.md b/src/reference/config/telemetry/exporters/aws-cloudwatch.md index a5a99498..9610cc3b 100644 --- a/src/reference/config/telemetry/exporters/aws-cloudwatch.md +++ b/src/reference/config/telemetry/exporters/aws-cloudwatch.md @@ -15,7 +15,6 @@ Specifies an exporter for transmitting Custom Metrics and Log Events to AWS Clou [Available in ](https://www.aklivity.io/products/zilla-plus) {.zilla-plus-badge .hint-container .info} - ```yaml {3} exporters: aws_cloudwatch: @@ -84,4 +83,3 @@ The name of the log group. > `string` The name of the log stream. - diff --git a/src/reference/config/telemetry/exporters/prometheus.md b/src/reference/config/telemetry/exporters/prometheus.md index e7f0bf5b..84ae27fe 100644 --- a/src/reference/config/telemetry/exporters/prometheus.md +++ b/src/reference/config/telemetry/exporters/prometheus.md @@ -62,4 +62,3 @@ URL port to accept for endpoint. > `string` URL path to accept for endpoint. - diff --git a/src/reference/config/telemetry/exporters/syslog.md b/src/reference/config/telemetry/exporters/syslog.md index 85ba5526..074b620f 100644 --- a/src/reference/config/telemetry/exporters/syslog.md +++ b/src/reference/config/telemetry/exporters/syslog.md @@ -116,4 +116,3 @@ or an AWS vault for remote pem format certificates stored in AWS secrets manager > `boolean` Specifies if the CA certs should be trusted. Only valid if the protocol is `tls`. - diff --git a/src/reference/config/telemetry/metrics/grpc.md b/src/reference/config/telemetry/metrics/grpc.md index f245b8d8..3413cc7f 100644 --- a/src/reference/config/telemetry/metrics/grpc.md +++ b/src/reference/config/telemetry/metrics/grpc.md @@ -82,4 +82,3 @@ The number of `grpc` request messages per RPC. > `histogram` The number of `grpc` response messages per RPC. - diff --git a/src/reference/config/telemetry/metrics/http.md b/src/reference/config/telemetry/metrics/http.md index 6c38cf22..4a80cf92 100644 --- a/src/reference/config/telemetry/metrics/http.md +++ b/src/reference/config/telemetry/metrics/http.md @@ -66,4 +66,3 @@ The `http` request content length in `bytes`. > `histogram` The `http` response content length in `bytes`. - diff --git a/src/reference/config/telemetry/metrics/stream.md b/src/reference/config/telemetry/metrics/stream.md index 92f69f82..5afb209e 100644 --- a/src/reference/config/telemetry/metrics/stream.md +++ b/src/reference/config/telemetry/metrics/stream.md @@ -114,4 +114,3 @@ The number of closed received streams. > `counter` The number of closed sent streams. - diff --git a/src/reference/config/vaults/aws.md b/src/reference/config/vaults/aws.md index 8bb4b389..d13a05df 100644 --- a/src/reference/config/vaults/aws.md +++ b/src/reference/config/vaults/aws.md @@ -72,4 +72,3 @@ Endpoint URL override for AWS Secrets Manager API. > `string` Endpoint URL override for AWS Resource Groups Tagging API. - diff --git a/src/reference/config/vaults/filesystem.md b/src/reference/config/vaults/filesystem.md index 6f8eee11..97c250a1 100644 --- a/src/reference/config/vaults/filesystem.md +++ b/src/reference/config/vaults/filesystem.md @@ -117,4 +117,3 @@ defaults to `"pkcs12"` > `string` Keystore password. - From cf208010287ab9f6606f9c3c93dedc08d96bf4f3 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 26 Aug 2024 15:20:16 -0400 Subject: [PATCH 18/54] fix links --- .github/contributing/writing-guide.md | 4 ++-- src/concepts/kafka-proxies/grpc-proxy.md | 2 +- src/how-tos/grpc/grpc.route-guide.service.md | 2 +- src/how-tos/mqtt/mqtt.kafka.broker.md | 2 +- src/reference/config/bindings/http/.partials/options.md | 6 +++--- src/reference/config/bindings/mqtt/server.md | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/contributing/writing-guide.md b/.github/contributing/writing-guide.md index 16439f5d..742b64de 100644 --- a/.github/contributing/writing-guide.md +++ b/.github/contributing/writing-guide.md @@ -72,9 +72,9 @@ When referencing specific attributes of the Zilla api always use and highlight t - `[grpc-kafka](../path/to/bindings/grpc-kafka/README.md) Binding` - `[jwt](../path/to/guards/jwt.md) Guard` -- `[produce capability](../path/to/bidndings/grpc-kafka/README.md#produce-capability)` +- `[produce capability](../path/to/bidndings/grpc-kafka/proxy.md#produce-capability)` -[Reference-style links](https://www.markdownguide.org/basic-syntax/README.md#reference-style-links) should only be used to clarify reading the raw text document when it is needed. This should be used in lists, tables, or complicated paragraphs. When used the reference definition should be placed in a group with other references and as close the usage as makes sense. Exact highlighted context should be used unless there is a case when reuse of the same link is needed in the same section. +[Reference-style links](https://www.markdownguide.org/basic-syntax/#reference-style-links) should only be used to clarify reading the raw text document when it is needed. This should be used in lists, tables, or complicated paragraphs. When used the reference definition should be placed in a group with other references and as close the usage as makes sense. Exact highlighted context should be used unless there is a case when reuse of the same link is needed in the same section. Good examples improve readability without adding extra work for a plain text reader: diff --git a/src/concepts/kafka-proxies/grpc-proxy.md b/src/concepts/kafka-proxies/grpc-proxy.md index e0d81869..d5e15307 100644 --- a/src/concepts/kafka-proxies/grpc-proxy.md +++ b/src/concepts/kafka-proxies/grpc-proxy.md @@ -12,7 +12,7 @@ Zilla can be the gRPC server, routing a service method's request and response me ## RPC Service Definitions -Zilla supports all four [gRPC service method definitions](https://grpc.io/docs/what-is-grpc/core-concepts/README.md#service-definition). The request and return message(s) are managed through two different Kafka topics, respectively. These topics are defined through [dynamic method routing](../bindings.md#routes). +Zilla supports all four [gRPC service method definitions](https://grpc.io/docs/what-is-grpc/core-concepts/#service-definition). The request and return message(s) are managed through two different Kafka topics, respectively. These topics are defined through [dynamic method routing](../bindings.md#routes). Zilla can also handle the stream upgrade when a client sends a single request, but the service expects a stream. Zilla does this by treating all gRPC request and response messages as a stream of messages on Kafka topics with at least one data message and a null end-of-stream message representing the end of the request or response streams. diff --git a/src/how-tos/grpc/grpc.route-guide.service.md b/src/how-tos/grpc/grpc.route-guide.service.md index 37df6c17..fdffe3ed 100644 --- a/src/how-tos/grpc/grpc.route-guide.service.md +++ b/src/how-tos/grpc/grpc.route-guide.service.md @@ -8,7 +8,7 @@ next: false This guide will walk through each unique gRPC message request and response design and how Zilla is configured to manage the connection for each. -Let's take a look at how Zilla would be configured with a full featured gRPC service. For this, we will use the [route_guide.proto](https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/route_guide.proto) to define the gRPC service and the method request-response types. You can find examples of running this service in any language on the [gRPC docs](https://grpc.io/docs/languages/) as well as example clients like this one implemented in [java](https://grpc.io/docs/languages/java/basics/README.md#client). +Let's take a look at how Zilla would be configured with a full featured gRPC service. For this, we will use the [route_guide.proto](https://github.com/grpc/grpc-java/blob/master/examples/src/main/proto/route_guide.proto) to define the gRPC service and the method request-response types. You can find examples of running this service in any language on the [gRPC docs](https://grpc.io/docs/languages/) as well as example clients like this one implemented in [java](https://grpc.io/docs/languages/java/basics/#client). ## Step 1: Declaring the service diff --git a/src/how-tos/mqtt/mqtt.kafka.broker.md b/src/how-tos/mqtt/mqtt.kafka.broker.md index 1d3a0f2b..cca7e6a5 100644 --- a/src/how-tos/mqtt/mqtt.kafka.broker.md +++ b/src/how-tos/mqtt/mqtt.kafka.broker.md @@ -154,7 +154,7 @@ A [ws](../../reference/config/bindings/tcp/) binding is added to handle any MQTT ### Service definition -The service definition defines how the clients using this service will interact with Kafka through Zilla. The required set of Kafka topics are defined in the [options.topics](../../reference/config/bindings/mqtt-kafka/README.md#options-topics) where Zilla manages any MQTT required features. A client identity can be determined by pulling the identifier out of the topic using the [options.clients](../../reference/config/bindings/mqtt-kafka/proxy.md#options-clients) property. +The service definition defines how the clients using this service will interact with Kafka through Zilla. The required set of Kafka topics are defined in the [options.topics](../../reference/config/bindings/mqtt-kafka/proxy.md#options-topics) where Zilla manages any MQTT required features. A client identity can be determined by pulling the identifier out of the topic using the [options.clients](../../reference/config/bindings/mqtt-kafka/proxy.md#options-clients) property. ```yaml{7-9,21} diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 98736550..56ef0270 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -33,7 +33,7 @@ A schema or type to validate the request content. #### params.path -> `object` of a named [`model`](../models/) +> `object` of a named [`model`](../../../models/) Enforce validation for path @@ -43,7 +43,7 @@ Enforce validation for path #### params.query -> `object` of a named [`model`](../models/) +> `object` of a named [`model`](../../../models/) Enforce validation for query @@ -69,7 +69,7 @@ Enforce validation for query #### responses[].headers -> `map` of "name: [model](../models/)" properties +> `map` of "name: [model](../../../models/)" properties Enforce validation for response headers. diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 276c982f..1f7507f6 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -68,7 +68,7 @@ Topic name. #### topics[].content -> `object` of a named [`model`](../models/) +> `object` of a named [`model`](../../models/) Enforce validation for content @@ -80,9 +80,9 @@ A schema or type to validate the request content. #### topics[].user-properties -> `map` of "name: [model](../models/)" properties +> `map` of "name: [model](../../models/)" properties -Enforce validation for user provided properties +Enforce validation for user provided properties. ```yaml user-properties: From 35d21985419c5a86fba5a80be4c0a071be27d310 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 26 Aug 2024 15:36:38 -0400 Subject: [PATCH 19/54] link fixing --- src/concepts/bindings.md | 10 +++++----- src/concepts/kafka-proxies/grpc-proxy.md | 6 +++--- src/concepts/kafka-proxies/http-proxy.md | 6 +++--- src/concepts/kafka-proxies/mqtt-proxy.md | 6 +++--- src/concepts/spec-generation.md | 8 ++++---- src/concepts/ssl.md | 6 +++--- src/how-tos/grpc/grpc.route-guide.service.md | 8 ++++---- src/how-tos/mqtt/mqtt.kafka.broker.md | 12 ++++++------ .../config/bindings/http/.partials/options.md | 8 ++++---- .../config/bindings/sse/.partials/options.md | 2 +- src/reference/config/telemetry/events.md | 2 +- 11 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/concepts/bindings.md b/src/concepts/bindings.md index 482cd3fc..53005658 100644 --- a/src/concepts/bindings.md +++ b/src/concepts/bindings.md @@ -59,7 +59,7 @@ A `cache_client` & `cache_server` combined provide a persistent cache of Kafka m #### Remote Server Bindings -A `remote_server` exists to adapt a Kafka topic stream to a higher-level application stream. Read more in the [kafka-grpc](../reference/config/bindings/kafka-grpc/) binding. +A `remote_server` exists to adapt a Kafka topic stream to a higher-level application stream. Read more in the [kafka-grpc](../reference/config/bindings/kafka-grpc/README.md) binding. ## Routes @@ -111,11 +111,11 @@ After the route logic matches, additional parameters are applied `with` the inbo Routes with the `fetch` capability map retrieval requests from a Kafka topic, supporting filtered or unfiltered retrieval of messages from the topic partitions, merged into a unified response. Filtering can apply to the Kafka message key, message headers, or a combination of both message key and headers. -The [http-kafka](../reference/config/bindings/http-kafka/) binding provides additional support for extracting parameter values from the inbound HTTP request path. Successful `200 OK` HTTP responses include an [ETag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) header that can be used with [if-none-match](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match) for subsequent conditional `GET` requests to check for updates. Rather than polling, HTTP requests can also include the `prefer wait=N` header to wait a maximum of `N` seconds before responding with `304 Not Modified` if not modified. When a new message arrives on the topic that would modify the response, all `prefer: wait=N` clients receive the response immediately with a corresponding new ETag. +The [http-kafka](../reference/config/bindings/http-kafka/README.md) binding provides additional support for extracting parameter values from the inbound HTTP request path. Successful `200 OK` HTTP responses include an [ETag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) header that can be used with [if-none-match](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match) for subsequent conditional `GET` requests to check for updates. Rather than polling, HTTP requests can also include the `prefer wait=N` header to wait a maximum of `N` seconds before responding with `304 Not Modified` if not modified. When a new message arrives on the topic that would modify the response, all `prefer: wait=N` clients receive the response immediately with a corresponding new ETag. ### Reliable message delivery -With the [grpc-kafka](../reference/config/bindings/grpc-kafka/) binding, using the fetch capability, reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the gRPC client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new gRPC request. This allows interrupted streams to pick up where they left off without missing messages in the response stream. +With the [grpc-kafka](../reference/config/bindings/grpc-kafka/README.md) binding, using the fetch capability, reliable message delivery is achieved by capturing the value of the `reliability` `field` injected into each response stream message at the gRPC client, and replaying the value via the `reliability` `metadata` header when reestablishing the stream with a new gRPC request. This allows interrupted streams to pick up where they left off without missing messages in the response stream. ### The Produce capability @@ -123,13 +123,13 @@ Routes with the `produce` capability map any request-response network call to a Requests with an `idempotency-key` header can be replayed and receive the same response. A Kafka consumer can detect and ignore any potential duplicate requests because they will have the same `idempotency-key` and `zilla:correlation-id`. -In the [http-kafka](../reference/config/bindings/http-kafka/) binding, specifying `async` allows clients to include a `prefer: respond-async` header in the HTTP request to receive `202 Accepted` response with `location` response header. +In the [http-kafka](../reference/config/bindings/http-kafka/README.md) binding, specifying `async` allows clients to include a `prefer: respond-async` header in the HTTP request to receive `202 Accepted` response with `location` response header. A corresponding `routes[].when` object with a matching `GET` method and `location` path is also required for follow-up `GET` requests to return the same response as would have been returned if the `prefer: respond-async` request header had been omitted. ## Route Exit -A route exists to direct a data stream to a desired exit point. This is the next binding needed to parse the stream data. Bindings like [tcp](../reference/config/bindings/tcp/) are frequently used to route incoming streams to different exit points. Once a valid exit point is determined messages can flow to the correct `exit` destination. +A route exists to direct a data stream to a desired exit point. This is the next binding needed to parse the stream data. Bindings like [tcp](../reference/config/bindings/tcp/README.md) are frequently used to route incoming streams to different exit points. Once a valid exit point is determined messages can flow to the correct `exit` destination. ## Guarded Routes diff --git a/src/concepts/kafka-proxies/grpc-proxy.md b/src/concepts/kafka-proxies/grpc-proxy.md index d5e15307..8d922908 100644 --- a/src/concepts/kafka-proxies/grpc-proxy.md +++ b/src/concepts/kafka-proxies/grpc-proxy.md @@ -8,7 +8,7 @@ next: /tutorials/grpc/grpc-intro.md The Zilla gRPC Kafka Proxy lets you implement gRPC service definitions from protobuf files to produce and consume messages via Kafka topics. -Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../../reference/config/bindings/grpc-kafka/) and [kafka-grpc](../../reference/config/bindings/kafka-grpc/) bindings in a [zilla.yaml](../../reference/config/overview/) config. Additionally, Zilla can sit on the critical path between a gRPC client and server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. +Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../../reference/config/bindings/grpc-kafka/) and [kafka-grpc](../../reference/config/bindings/kafka-grpc/README.md) bindings in a [zilla.yaml](../../reference/config/overview.md) config. Additionally, Zilla can sit on the critical path between a gRPC client and server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. ## RPC Service Definitions @@ -62,6 +62,6 @@ Clients can fetch some or all messages from a single Kafka topic using a route w ## Kafka Consumer Groups -The [kafka-grpc](../../reference/config/bindings/kafka-grpc/) `remote_server` binding will create a consumer group. It creates one consumer per named binding in a zilla config. The format of the consumer group ID is `zilla:-`. Scaling the number of Zilla instances with the same configuration will add each new Zilla instance as a member of the same group. Using different Zilla `namespace`s or adding multiple bindings will create different consumer groups. +The [kafka-grpc](../../reference/config/bindings/kafka-grpc/README.md) `remote_server` binding will create a consumer group. It creates one consumer per named binding in a zilla config. The format of the consumer group ID is `zilla:-`. Scaling the number of Zilla instances with the same configuration will add each new Zilla instance as a member of the same group. Using different Zilla `namespace`s or adding multiple bindings will create different consumer groups. -The [grpc-kakfa](../../reference/config/bindings/grpc-kafka/) does not create consumer groups. Instead, the binding fetches messages from a topic the same way for all connected clients. Clients can filter messages received using filters like adding the desired Kafka message key in the `idempotency-key` header. The client can track and recover progress through the stream using [reliable delivery](#reliable-delivery). +The [grpc-kakfa](../../reference/config/bindings/grpc-kafka/README.md) does not create consumer groups. Instead, the binding fetches messages from a topic the same way for all connected clients. Clients can filter messages received using filters like adding the desired Kafka message key in the `idempotency-key` header. The client can track and recover progress through the stream using [reliable delivery](#reliable-delivery). diff --git a/src/concepts/kafka-proxies/http-proxy.md b/src/concepts/kafka-proxies/http-proxy.md index 17c13c7f..71e89116 100644 --- a/src/concepts/kafka-proxies/http-proxy.md +++ b/src/concepts/kafka-proxies/http-proxy.md @@ -12,7 +12,7 @@ A developer has the freedom to define their own HTTP mapping to Kafka, with cont ## Configure Endpoints -Zilla can map REST APIs to Kafka using the [http-kafka](../../reference/config/bindings/http-kafka.md/) binding in a [zilla.yaml](../../reference/config/overview.md) config. Zilla routes REST urls using [wildcard pattern matching](../bindings.md#pattern-matching) and [dynamic path params](../bindings.md#dynamic-path-parameters). Dynamic path matching and custom message routing from endpoints to Kafka topics help prevent API lock-in. +Zilla can map REST APIs to Kafka using the [http-kafka](../../reference/config/bindings/http-kafka/README.md) binding in a [zilla.yaml](../../reference/config/overview.md) config. Zilla routes REST urls using [wildcard pattern matching](../bindings.md#pattern-matching) and [dynamic path params](../bindings.md#dynamic-path-parameters). Dynamic path matching and custom message routing from endpoints to Kafka topics help prevent API lock-in. ### HTTP request methods @@ -32,7 +32,7 @@ An asynchronous interaction includes a `prefer: respond-async` header when calli ## SSE Streaming -The Zilla Server-sent Events (SSE) Kafka Proxy exposes an SSE stream of Kafka messages using the [sse-kafka](../../reference/config/bindings/sse-kafka/) binding. +The Zilla Server-sent Events (SSE) Kafka Proxy exposes an SSE stream of Kafka messages using the [sse-kafka](../../reference/config/bindings/sse-kafka/README.md) binding. An [SSE](https://html.spec.whatwg.org/multipage/server-sent-events.html) server allows a web browser using the `EventSource` interface to send a request to an SSE endpoint and receive a stream of text from the server, interpreted as individual messages. Zilla relays text messages on a Kafka topic into the event stream. @@ -60,7 +60,7 @@ An HTTP response returns with an [ETag](https://developer.mozilla.org/en-US/docs ## CORS -Zilla supports Cross-Origin Resource Sharing (CORS) and allows you to specify fine-grained access control, including specific request origins, methods and headers allowed, and specific response headers exposed. Since it acts more like a guard and has no dependency on Apache Kafka configuration, you need to define it in the [http](../../reference/config/bindings/http/) binding. +Zilla supports Cross-Origin Resource Sharing (CORS) and allows you to specify fine-grained access control, including specific request origins, methods and headers allowed, and specific response headers exposed. Since it acts more like a guard and has no dependency on Apache Kafka configuration, you need to define it in the [http](../../reference/config/bindings/http/README.md) binding. ## Authorization diff --git a/src/concepts/kafka-proxies/mqtt-proxy.md b/src/concepts/kafka-proxies/mqtt-proxy.md index 737f69db..7f9932c6 100644 --- a/src/concepts/kafka-proxies/mqtt-proxy.md +++ b/src/concepts/kafka-proxies/mqtt-proxy.md @@ -8,7 +8,7 @@ next: /tutorials/mqtt/mqtt-intro.md The Zilla MQTT Kafka Proxy manages MQTT Pub/Sub connections and messages on and off of Kafka. -An MQTT server acts as a broker between publishers and subscribers. This requires a complex protocol to manage the wide range of IoT devices and use cases. By proxying these messages on and off of Kafka with the [mqtt-kafka](../../reference/config/bindings/mqtt-kafka/) binding in a [zilla.yaml](../../reference/config/overview/) config, IoT devices can transmit data to a wider range of tech stacks, adapting to more business needs. +An MQTT server acts as a broker between publishers and subscribers. This requires a complex protocol to manage the wide range of IoT devices and use cases. By proxying these messages on and off of Kafka with the [mqtt-kafka](../../reference/config/bindings/mqtt-kafka/) binding in a [zilla.yaml](../../reference/config/overview.md) config, IoT devices can transmit data to a wider range of tech stacks, adapting to more business needs. Zilla uses specific Kafka topics to store and route MQTT messages, meaning the Kafka architecture can be optimized for MQTT Pub/Sub. MQTT client subscribers and publishers will communicate with Zilla the same as any broker. @@ -30,7 +30,7 @@ An MQTT client can use any Quality of Service flag. ### MQTT over WebSocket -The [tcp](../../reference/config/bindings/tcp/) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. Zilla natively handles WebSockets and can manage the MQTT protocol over an active connection. +The [tcp](../../reference/config/bindings/tcp/README.md) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. Zilla natively handles WebSockets and can manage the MQTT protocol over an active connection. ### Last Will and Testament @@ -74,4 +74,4 @@ MQTT connect, disconnect, and other session messages are maintained on the `sess ## Authorizing clients -Any connection Zilla handles can be secured using the [tls](../../reference/config/bindings/tls/) binding. This means both MQTT and MQTT over WebSocket can be encrypted. Additionally, A client connection to the MQTT server can be guarded by the [jwt](../../reference/config/guards/jwt/) guard supporting JWT access tokens, with fine-grained privileges enforced on publish or subscribe to MQTT topics. +Any connection Zilla handles can be secured using the [tls](../../reference/config/bindings/tls/) binding. This means both MQTT and MQTT over WebSocket can be encrypted. Additionally, A client connection to the MQTT server can be guarded by the [jwt](../../reference/config/guards/jwt.md) guard supporting JWT access tokens, with fine-grained privileges enforced on publish or subscribe to MQTT topics. diff --git a/src/concepts/spec-generation.md b/src/concepts/spec-generation.md index fd787355..56ac1be8 100644 --- a/src/concepts/spec-generation.md +++ b/src/concepts/spec-generation.md @@ -8,7 +8,7 @@ Zilla can leverage standard API schema specifications to configure the settings ## OpenAPI and AsyncAPI -The Zilla config uses many of the same parameters as the public and open-source interface definition languages [OpenAPI](https://www.openapis.org/) and [AsyncAPI](https://www.asyncapi.com/). Services and tools are available to describe your existing APIs and infrastructure using OpenAPI and AsyncAPI definitions. These specs enable more consistent documentation, versioning, and code generation. Using the [openapi](../reference/config/bindings/openapi/) and [asyncapi](../reference/config/bindings/asyncapi/) bindings enables the use of existing interface specs to configure Zilla. +The Zilla config uses many of the same parameters as the public and open-source interface definition languages [OpenAPI](https://www.openapis.org/) and [AsyncAPI](https://www.asyncapi.com/). Services and tools are available to describe your existing APIs and infrastructure using OpenAPI and AsyncAPI definitions. These specs enable more consistent documentation, versioning, and code generation. Using the [openapi](../reference/config/bindings/openapi/) and [asyncapi](../reference/config/bindings/asyncapi/README.md) bindings enables the use of existing interface specs to configure Zilla. Zilla leverages the interface definitions in these specs to generate the necessary `zilla.yaml` config to implement the defined services. Zilla doesn't generate code that needs to be maintained. Instead, it generates the underlying configuration necessary to implement a functioning interface. Both standard and complex use cases are implemented easily with Zilla. @@ -16,13 +16,13 @@ You can see a working [Petstore Demo](https://github.com/aklivity/zilla-demos/tr ### OpenAPI -Zilla implements the RESTful APIs defined in the [openapi](../reference/config/bindings/openapi/) binding. A REST Kafka proxy is defined using the [openapi-asyncapi](../reference/config/bindings/openapi-asyncapi/) binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/asyncapi/) `client` binding. +Zilla implements the RESTful APIs defined in the [openapi](../reference/config/bindings/openapi/) binding. A REST Kafka proxy is defined using the [openapi-asyncapi](../reference/config/bindings/openapi-asyncapi/) binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/asyncapi/README.md) `client` binding. > [Petstore REST demo](https://github.com/aklivity/zilla-demos/tree/main/petstore) | [Taxi Hailing demo](https://github.com/aklivity/zilla-demos/tree/main/taxi) | [openapi.proxy example](https://github.com/aklivity/zilla-examples/tree/main/openapi.proxy) ### AsyncAPI -Zilla implements Event-Driven APIs defined in the [asyncapi](../reference/config/bindings/asyncapi/) binding. A Kafka proxy is defined using the [asyncapi](../reference/config/bindings/asyncapi/) `proxy` binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/asyncapi/) `client` binding. +Zilla implements Event-Driven APIs defined in the [asyncapi](../reference/config/bindings/asyncapi/) binding. A Kafka proxy is defined using the [asyncapi](../reference/config/bindings/asyncapi/) `proxy` binding. The Kafka configuration is defined with an [asyncapi](../reference/config/bindings/asyncapi/README.md) `client` binding. > [Taxi Hailing demo](https://github.com/aklivity/zilla-demos/tree/main/taxi) | [asyncapi.http.kafka.proxy example](https://github.com/aklivity/zilla-examples/tree/main/asyncapi.http.kafka.proxy) | [asyncapi.mqtt.kafka.proxy example](https://github.com/aklivity/zilla-examples/tree/main/asyncapi.mqtt.kafka.proxy) | [asyncapi.sse.kafka.proxy example](https://github.com/aklivity/zilla-examples/tree/main/asyncapi.sse.kafka.proxy) @@ -30,6 +30,6 @@ Zilla implements Event-Driven APIs defined in the [asyncapi](../reference/config The Zilla gRPC Kafka Proxy lets you implement gRPC service definitions from protobuf files to produce and consume messages via Kafka topics. -Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../reference/config/bindings/grpc-kafka/) and [kafka-grpc](../reference/config/bindings/kafka-grpc/) bindings in a [zilla.yaml](../reference/config/overview/) config. Additionally, Zilla can sit on the critical path between a gRPC client and a server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. +Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the [grpc-kafka](../reference/config/bindings/grpc-kafka/) and [kafka-grpc](../reference/config/bindings/kafka-grpc/) bindings in a [zilla.yaml](../reference/config/overview.md) config. Additionally, Zilla can sit on the critical path between a gRPC client and a server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka. > [grpc.kafka.fanout example](https://github.com/aklivity/zilla-examples/tree/main/grpc.kafka.fanout) | [grpc.proxy example](https://github.com/aklivity/zilla-examples/tree/main/grpc.proxy) diff --git a/src/concepts/ssl.md b/src/concepts/ssl.md index d962876d..131e242c 100644 --- a/src/concepts/ssl.md +++ b/src/concepts/ssl.md @@ -1,8 +1,8 @@ # Server Encryption, TLS & SSL -Vaults can be used by specific protocol bindings, such as [tls](../reference/config/bindings/tls/), to negotiate shared encryption keys. It is easy to add the necessary routing logic and encryption keys. +Vaults can be used by specific protocol bindings, such as [tls](../reference/config/bindings/tls/README.md), to negotiate shared encryption keys. It is easy to add the necessary routing logic and encryption keys. -Using a [filesystem](../reference/config/vaults/filesystem.md) vault, you can see how a pkcs12 certificate on the host is configured to be stored securely by the Zilla runtime. This keystore can then be used by the [tls](../reference/config/bindings/tls/) binding to decrypt incoming traffic. +Using a [filesystem](../reference/config/vaults/filesystem.md) vault, you can see how a pkcs12 certificate on the host is configured to be stored securely by the Zilla runtime. This keystore can then be used by the [tls](../reference/config/bindings/tls/README.md) binding to decrypt incoming traffic. ```yaml{6} vaults: @@ -15,7 +15,7 @@ vaults: password: ${{env.KEYSTORE_PASSWORD}} ``` -The [tcp](../reference/config/bindings/tcp/) binding can be configured for both encrypted and unencrypted traffic on separate ports. Take the SSL example with ports `80` and `443`. The [tls](../reference/config/bindings/tls/) binding will use the `keys` as the certificate aliases and the Server Name Indication (`sni`/) as the SSL server names. These will likely be the same. Since this example is over [http](../reference/config/bindings/http/) the Application-Layer Protocol Negotiation (ALPN/) will need to handle both HTTP/1.1 and HTTP/2, but the [tls](../reference/config/bindings/tls/) binding can be configured for any of the [alpn](../reference/config/bindings/tls/server.md#options-alpn) protocols supported by Zilla. +The [tcp](../reference/config/bindings/tcp/) binding can be configured for both encrypted and unencrypted traffic on separate ports. Take the SSL example with ports `80` and `443`. The [tls](../reference/config/bindings/tls/) binding will use the `keys` as the certificate aliases and the Server Name Indication (`sni`/) as the SSL server names. These will likely be the same. Since this example is over [http](../reference/config/bindings/http/) the Application-Layer Protocol Negotiation (ALPN/) will need to handle both HTTP/1.1 and HTTP/2, but the [tls](../reference/config/bindings/tls/README.md) binding can be configured for any of the [alpn](../reference/config/bindings/tls/server.md#options-alpn) protocols supported by Zilla. ```yaml{20,29} bindings: diff --git a/src/how-tos/grpc/grpc.route-guide.service.md b/src/how-tos/grpc/grpc.route-guide.service.md index fdffe3ed..61115318 100644 --- a/src/how-tos/grpc/grpc.route-guide.service.md +++ b/src/how-tos/grpc/grpc.route-guide.service.md @@ -12,7 +12,7 @@ Let's take a look at how Zilla would be configured with a full featured gRPC ser ## Step 1: Declaring the service -Zilla lets you use your service proto file(s) to specify the service definitions. This will let you create one or many [grpc-kafka](../../reference/config/bindings/grpc-kafka/) proxy handlers to be used by the whole service or individual methods. +Zilla lets you use your service proto file(s) to specify the service definitions. This will let you create one or many [grpc-kafka](../../reference/config/bindings/grpc-kafka/README.md) proxy handlers to be used by the whole service or individual methods. Here is the service we will be enhancing with Zilla and Kafka. @@ -134,7 +134,7 @@ routes: ### Fanout streaming RPC -An additional method for getting messages from a service onto Kafka is using the [grpc-kafka](../../reference/config/bindings/grpc-kafka/) fetch capability. This enables message filtering and reliable message delivery. Read more about the [fetch capability](../../reference/config/bindings/grpc-kafka/proxy.md#fetch-capability) in the reference section. +An additional method for getting messages from a service onto Kafka is using the [grpc-kafka](../../reference/config/bindings/grpc-kafka/README.md) fetch capability. This enables message filtering and reliable message delivery. Read more about the [fetch capability](../../reference/config/bindings/grpc-kafka/proxy.md#fetch-capability) in the reference section. The service will need a method that accepts the `google/protobuf/empty.proto` and produce the massage to be fanned out onto the Kafka topic. @@ -167,7 +167,7 @@ grpc_kafka: ## Step 3: Calling services from Kafka -Now that messages are in Kafka we need to send them to the gRPC services responsible for processing them. For this, we will be using the [kafka-grpc](../../reference/config/bindings/kafka-grpc/) binding. +Now that messages are in Kafka we need to send them to the gRPC services responsible for processing them. For this, we will be using the [kafka-grpc](../../reference/config/bindings/kafka-grpc/README.md) binding. ```yaml remote_server: @@ -226,7 +226,7 @@ tcp_client: ### Proxy service entrypoint -Using a [tcp](../../reference/config/bindings/tcp/) server binding we can route the gRPC traffic through an `http` server, `${{env.ENTRYPOINT_HOST}}`:`${{env.ENTRYPOINT_PORT}}`, to our desired gRPC server at the ``. The [tls](../../reference/config/bindings/tls/) server binding secures the entrypoint by defining a tls certificate from the [filesystem](../../reference/config/vaults/filesystem/) vault, which is used to send the traffic over https. Alternatively, if tls is not needed The tcp server can exit directly to the http server and the tls binding and filesystem vault can be removed. +Using a [tcp server](../../reference/config/bindings/tcp/server.md) binding we can route the gRPC traffic through an `http` server, `${{env.ENTRYPOINT_HOST}}`:`${{env.ENTRYPOINT_PORT}}`, to our desired gRPC server at the ``. The [tls server](../../reference/config/bindings/tls/server.md) binding secures the entrypoint by defining a tls certificate from the [filesystem](../../reference/config/vaults/filesystem.md) vault, which is used to send the traffic over https. Alternatively, if tls is not needed The tcp server can exit directly to the http server and the tls binding and filesystem vault can be removed. ```yaml tcp_server: diff --git a/src/how-tos/mqtt/mqtt.kafka.broker.md b/src/how-tos/mqtt/mqtt.kafka.broker.md index cca7e6a5..ccbddb7f 100644 --- a/src/how-tos/mqtt/mqtt.kafka.broker.md +++ b/src/how-tos/mqtt/mqtt.kafka.broker.md @@ -131,25 +131,25 @@ Create a new file called `zilla.yaml` and append the below yaml to it. ### Entrypoint -This will configure Zilla for accepting all of the `mqtt` traffic. The [tcp](../../reference/config/bindings/tcp/) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. +This will configure Zilla for accepting all of the `mqtt` traffic. The [tcp](../../reference/config/bindings/tcp/README.md) binding defines the ports Zilla will accept traffic for both MQTT and WebSocket connections. ```yaml{12-13,15-16} ``` ::: right -[More on binding-tcp](../../reference/config/bindings/tcp/) +[More on binding-tcp](../../reference/config/bindings/tcp/README.md) ::: -A [ws](../../reference/config/bindings/tcp/) binding is added to handle any MQTT over WebSocket using the `mqtt` protocol. The [mqtt](../../reference/config/bindings/mqtt/) binding then handles all of the MQTT message traffic that needs to go to Kafka. +A [ws](../../reference/config/bindings/tcp/) binding is added to handle any MQTT over WebSocket using the `mqtt` protocol. The [mqtt](../../reference/config/bindings/mqtt/README.md) binding then handles all of the MQTT message traffic that needs to go to Kafka. ```yaml{17,22} ``` ::: right -[More on binding-mqtt](../../reference/config/bindings/mqtt/) -[More on binding-ws](../../reference/config/bindings/tcp/) +[More on binding-mqtt](../../reference/config/bindings/mqtt/README.md) +[More on binding-ws](../../reference/config/bindings/tcp/README.md) ::: ### Service definition @@ -161,7 +161,7 @@ The service definition defines how the clients using this service will interact ``` ::: right -[More on binding-mqtt-kafka](../../reference/config/bindings/mqtt-kafka/) +[More on binding-mqtt-kafka](../../reference/config/bindings/mqtt-kafka/README.md) [More on topic data](../../concepts/kafka-proxies/mqtt-proxy.md#step-2-pub-sub-message-reflect-with-kafka) ::: diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 56ef0270..296adae4 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -11,7 +11,7 @@ Enforce validation for the request content. #### content.model -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] A schema or type to validate the request content. @@ -39,7 +39,7 @@ Enforce validation for path #### path.model -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] #### params.query @@ -49,7 +49,7 @@ Enforce validation for query #### query.model -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] #### requests[].path @@ -82,7 +82,7 @@ headers: #### headers.model -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] #### responses[].status diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index 92ca4be4..9a4a9b07 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -35,6 +35,6 @@ Enforce validation for the request content. #### content.model -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] A schema or type to validate the request content. diff --git a/src/reference/config/telemetry/events.md b/src/reference/config/telemetry/events.md index 3ee4fe8c..28698740 100644 --- a/src/reference/config/telemetry/events.md +++ b/src/reference/config/telemetry/events.md @@ -78,7 +78,7 @@ An MQTT session was successfully authorized and connected. ### BINDING_MQTT_KAFKA_NON_COMPACT_SESSIONS_TOPIC -The sessions topic declared in the [mqtt-kafka](../bindings/mqtt-kafka/) is required to be log compacted. +The sessions topic declared in the [mqtt-kafka](../bindings/mqtt-kafka/README.md) is required to be log compacted. ### BINDING_TCP_DNS_FAILED From 1a6cef73b1a8d6f9e5e57f81729bbe519ddc4246 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 26 Aug 2024 15:54:20 -0400 Subject: [PATCH 20/54] sidebar styles --- src/.vuepress/styles/index.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/.vuepress/styles/index.scss b/src/.vuepress/styles/index.scss index d8ad2d04..a524e631 100644 --- a/src/.vuepress/styles/index.scss +++ b/src/.vuepress/styles/index.scss @@ -140,9 +140,12 @@ h6 { margin-left: 0rem; font-weight: 600; } + .vp-sidebar-title { + font-weight: 500; + } .vp-sidebar-links { .vp-sidebar-link { - padding: 0.25rem 0.5rem; + padding-right: 0rem !important; margin-left: 0rem; } .vp-sidebar-links { From 604e65fd12e2d96f6af2dfad4d6862e3fe8c5c2f Mon Sep 17 00:00:00 2001 From: AJ Danelz Date: Tue, 27 Aug 2024 14:20:34 -0400 Subject: [PATCH 21/54] Update .github/contributing/writing-guide.md Co-authored-by: John Fallows --- .github/contributing/writing-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/contributing/writing-guide.md b/.github/contributing/writing-guide.md index 742b64de..52083d4f 100644 --- a/.github/contributing/writing-guide.md +++ b/.github/contributing/writing-guide.md @@ -72,7 +72,7 @@ When referencing specific attributes of the Zilla api always use and highlight t - `[grpc-kafka](../path/to/bindings/grpc-kafka/README.md) Binding` - `[jwt](../path/to/guards/jwt.md) Guard` -- `[produce capability](../path/to/bidndings/grpc-kafka/proxy.md#produce-capability)` +- `[produce capability](../path/to/bindings/grpc-kafka/proxy.md#produce-capability)` [Reference-style links](https://www.markdownguide.org/basic-syntax/#reference-style-links) should only be used to clarify reading the raw text document when it is needed. This should be used in lists, tables, or complicated paragraphs. When used the reference definition should be placed in a group with other references and as close the usage as makes sense. Exact highlighted context should be used unless there is a case when reuse of the same link is needed in the same section. From b7ca8cee1cf154a6ab82ed9a7a6c0ef457d1b67f Mon Sep 17 00:00:00 2001 From: AJ Danelz Date: Tue, 27 Aug 2024 14:22:53 -0400 Subject: [PATCH 22/54] Update src/reference/config/bindings/asyncapi/.partials/proxy.yaml Co-authored-by: John Fallows --- .../bindings/asyncapi/.partials/proxy.yaml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/reference/config/bindings/asyncapi/.partials/proxy.yaml b/src/reference/config/bindings/asyncapi/.partials/proxy.yaml index 5a8c3b87..0c8ae25b 100644 --- a/src/reference/config/bindings/asyncapi/.partials/proxy.yaml +++ b/src/reference/config/bindings/asyncapi/.partials/proxy.yaml @@ -4,17 +4,15 @@ options: specs: my-mqtt-api-spec: - my-kafka-api-spec: - catalog: - my_catalog: - subject: petstore - version: latest + catalog: + my_catalog: + subject: mqtt-streetlights + version: latest my-kafka-api-spec: - my-kafka-api-spec: - catalog: - my_catalog: - subject: petstore - version: latest + catalog: + my_catalog: + subject: kafka-streetlights + version: latest mqtt-kafka: channels: sessions: mqttSessions From 7d449745101f00658e9b18f8d1dadc862daa839c Mon Sep 17 00:00:00 2001 From: AJ Danelz Date: Tue, 27 Aug 2024 14:30:40 -0400 Subject: [PATCH 23/54] Update src/reference/config/bindings/ws/.partials/server.yaml Co-authored-by: John Fallows --- src/reference/config/bindings/ws/.partials/server.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/reference/config/bindings/ws/.partials/server.yaml b/src/reference/config/bindings/ws/.partials/server.yaml index b0152ebb..c2150f25 100644 --- a/src/reference/config/bindings/ws/.partials/server.yaml +++ b/src/reference/config/bindings/ws/.partials/server.yaml @@ -1,8 +1,8 @@ ws_server: type: ws kind: server - exit: default_server + exit: echo_server routes: - when: - - protocol: echo - exit: echo_server + - protocol: mqtt + exit: mqtt_server From c0eb747f1a746ef99c06dc7ee538c1658eb9a28d Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 27 Aug 2024 14:43:36 -0400 Subject: [PATCH 24/54] fix: remove extra schema:version option for the cataloged $def --- src/reference/config/models/.partials/cataloged.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index a21d3557..fea643c5 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -11,9 +11,6 @@ To map defined catalog for schema retrieval based on catalog specific parameters ----- > `subject` > `version` ------ -> `schema` -> `version` #### catalog.id @@ -38,7 +35,3 @@ To determine the subject based on the specified strategy > `string` Unique identifier for schema categorization in the catalog. - -#### catalog.schema - -> `string` From 78ff9f6313ed02146a8dfe3a2eb44ab0dc64099d Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 27 Aug 2024 14:44:20 -0400 Subject: [PATCH 25/54] fix: add MSK SPA auth links on deploy page --- src/solutions/how-tos/amazon-msk/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/solutions/how-tos/amazon-msk/index.md b/src/solutions/how-tos/amazon-msk/index.md index c98042d2..77904f66 100644 --- a/src/solutions/how-tos/amazon-msk/index.md +++ b/src/solutions/how-tos/amazon-msk/index.md @@ -17,7 +17,9 @@ The IoT Ingest and Control MQTT Broker that lets clients publish messages and su The Secure Public Access Proxy lets authorized Kafka clients connect, publish messages and subscribe to topics in your Amazon MSK cluster via the internet. -> [Amazon MSK Secure Public Access Proxy Guide](./secure-public-access/production.md) +> [Amazon MSK Secure Public Access Proxy with SASL/SCRAM Guide](./secure-public-access/production.md) +> [Amazon MSK Secure Public Access Proxy with Mutual TLS (mTLS) Guide](./secure-public-access/production-mutual-tls.md) +> [Amazon MSK Secure Public Access Proxy with Unauthorized access Guide](./secure-public-access/development.md) ## Web Streaming From 4efe98b60dbbe626dfa58e229b3ff1f995da4c55 Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 27 Aug 2024 15:34:56 -0400 Subject: [PATCH 26/54] fix: remove the cataloged refs with "schema" --- .check-schema/README.md | 17 +++- .check-schema/zilla-schema.json | 84 ------------------- src/.vuepress/public/assets/zilla-schema.json | 3 - 3 files changed, 16 insertions(+), 88 deletions(-) diff --git a/.check-schema/README.md b/.check-schema/README.md index 0108e7b4..d1c60e3a 100644 --- a/.check-schema/README.md +++ b/.check-schema/README.md @@ -1 +1,16 @@ -docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema.plain > zilla-schema.json +# Schema Docs Comparison + +This project compares the JSON Schema from the Zilla to the [Reference](../src/reference) section of the docs. + +## Update schema + +In the repository root directory run: + +```bash +docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema.plain > ./.check-schema/zilla-schema.json +docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema > ./src/.vuepress/public/assets/zilla-schema.json +``` + +Once the docker container has printed "started" it must be deleted for the command to complete. + +Remove the none JSON lines from the beginning and end of each file. diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 17daebea..5f9754fd 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -684,22 +684,6 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "type": "string" - }, - "version": { - "type": "string", - "default": "latest" - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { @@ -4233,22 +4217,6 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "type": "string" - }, - "version": { - "type": "string", - "default": "latest" - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { @@ -4454,22 +4422,6 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "type": "string" - }, - "version": { - "type": "string", - "default": "latest" - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { @@ -4557,26 +4509,6 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "type": "string" - }, - "version": { - "type": "string", - "default": "latest" - }, - "record": { - "type": "string" - } - }, - "required": [ - "schema", - "record" - ], - "additionalProperties": false - }, { "type": "object", "properties": { @@ -4859,22 +4791,6 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "type": "string" - }, - "version": { - "type": "string", - "default": "latest" - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { diff --git a/src/.vuepress/public/assets/zilla-schema.json b/src/.vuepress/public/assets/zilla-schema.json index b006d189..4dc1a413 100644 --- a/src/.vuepress/public/assets/zilla-schema.json +++ b/src/.vuepress/public/assets/zilla-schema.json @@ -1,4 +1,3 @@ - { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Namespace", @@ -1863,8 +1862,6 @@ }, "vault": false, "options": false, - "catalog": false, - "entry": false, "routes": { "items": { "properties": { From e23f174385ca45bdc76a864bda0d18ae9f8d541f Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 27 Aug 2024 15:50:14 -0400 Subject: [PATCH 27/54] fix: move catalog --- .../config/bindings/.partials/catalog.md | 17 ----------------- .../bindings/asyncapi/.partials/options.md | 6 +++--- src/reference/config/bindings/grpc/server.md | 19 ++++++++++++++++++- 3 files changed, 21 insertions(+), 21 deletions(-) delete mode 100644 src/reference/config/bindings/.partials/catalog.md diff --git a/src/reference/config/bindings/.partials/catalog.md b/src/reference/config/bindings/.partials/catalog.md deleted file mode 100644 index 74d1ca56..00000000 --- a/src/reference/config/bindings/.partials/catalog.md +++ /dev/null @@ -1,17 +0,0 @@ -### catalog - -> `object` - -To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. - -#### catalog.subject - -> `string` - -Unique identifier for schema categorization in the catalog. - -#### catalog.version - -> `string` | Default: `"latest"` - -Specific iteration or version of a registered schema in the defined catalog. diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index e19d8051..290f414f 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -8,7 +8,7 @@ specs specific options > `object` as map of named properties -catalog specific options. +To map defined catalog for schema retrieval based on catalog specific parameters. #### catalog.subject @@ -18,9 +18,9 @@ Subject name used when storing the catalog artifact. #### catalog.version -> `string` +> `string` | Default: `"latest"` -Catalog artifact version to use. +Specific iteration or version of a registered schema in the defined catalog. #### specs.servers diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 178a53a4..1b32cddf 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -17,7 +17,24 @@ The grpc server binding adapts `http` request-response streams to `grpc` request ## Configuration (\* required) - +### catalog + +> `object` as map of named properties + +To map defined catalog for schema retrieval based on catalog specific parameters. + +#### catalog.subject + +> `string` + +Subject name used when storing the catalog artifact. + +#### catalog.version + +> `string` | Default: `"latest"` + +Specific iteration or version of a registered schema in the defined catalog. + From 8c12b8b00b4eddfa15d1cd0e2e942e6919934768 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 28 Aug 2024 08:29:11 -0400 Subject: [PATCH 28/54] fix: handle required fields --- .check-schema/index.js | 46 +++++++++---------- .../config/bindings/.partials/cataloged.md | 6 +-- .../bindings/.partials/options-http-auth.md | 2 +- .../.partials/options-kafka-topics.md | 6 +-- .../bindings/.partials/options-mqtt-auth.md | 2 +- .../config/bindings/.partials/options-tls.md | 2 +- .../config/bindings/amqp/.partials/routes.md | 2 +- .../bindings/asyncapi/.partials/options.md | 6 +-- .../config/bindings/asyncapi/proxy.md | 2 +- .../config/bindings/asyncapi/server.md | 2 +- src/reference/config/bindings/fan/server.md | 2 +- .../bindings/grpc-kafka/.partials/options.md | 2 +- .../bindings/grpc-kafka/.partials/routes.md | 14 +++--- .../config/bindings/grpc/.partials/routes.md | 2 +- src/reference/config/bindings/grpc/server.md | 2 +- .../http-filesystem/.partials/routes.md | 4 +- .../bindings/http-kafka/.partials/options.md | 4 +- .../bindings/http-kafka/.partials/routes.md | 16 +++---- .../config/bindings/http/.partials/options.md | 8 ++-- .../config/bindings/http/.partials/routes.md | 2 +- src/reference/config/bindings/http/server.md | 2 +- .../bindings/kafka-grpc/.partials/routes.md | 10 ++-- .../config/bindings/kafka/.partials/routes.md | 4 +- .../bindings/mqtt-kafka/.partials/options.md | 4 +- .../bindings/mqtt-kafka/.partials/routes.md | 2 +- .../config/bindings/mqtt/.partials/routes.md | 2 +- src/reference/config/bindings/mqtt/server.md | 6 +-- .../openapi-asyncapi/.partials/options.md | 8 ++-- .../openapi-asyncapi/.partials/routes.md | 2 +- .../bindings/openapi/.partials/options.md | 6 +-- .../config/bindings/proxy/.partials/routes.md | 2 +- .../bindings/sse-kafka/.partials/routes.md | 6 +-- .../config/bindings/sse/.partials/options.md | 2 +- .../config/bindings/sse/.partials/routes.md | 4 +- src/reference/config/bindings/tcp/server.md | 2 +- .../config/bindings/tls/.partials/options.md | 2 +- .../config/bindings/tls/.partials/routes.md | 2 +- .../config/bindings/ws/.partials/routes.md | 2 +- .../.partials/options-schema-registry.md | 2 +- .../config/catalogs/apicurio-registry.md | 2 +- src/reference/config/catalogs/filesystem.md | 2 +- src/reference/config/catalogs/inline.md | 2 +- .../config/models/.partials/cataloged.md | 8 ++-- src/reference/config/models/avro.md | 2 +- src/reference/config/models/double.md | 2 +- src/reference/config/models/float.md | 2 +- src/reference/config/models/int32.md | 2 +- src/reference/config/models/int64.md | 2 +- src/reference/config/models/json.md | 2 +- src/reference/config/models/protobuf.md | 20 ++------ src/reference/config/models/string.md | 2 +- .../config/telemetry/exporters/otlp.md | 2 +- .../config/telemetry/exporters/prometheus.md | 4 +- src/reference/config/vaults/filesystem.md | 6 +-- 54 files changed, 126 insertions(+), 136 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index 825855f0..25fb6881 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -13,20 +13,18 @@ const main = async () => { var foundHeadings = []; tokens .filter(({ depth, type }) => type == "heading" && depth == 3) - .forEach((t) => { - if (t.text && t.type && t.type === "heading") { - t.tokens - .filter(({ type }) => type === "text") - .forEach(({ text }) => foundHeadings.push(`${text}`)); + .forEach(({ type, text }) => { + if (text && type === "heading") { + // console.log("heading", t); + foundHeadings.push(text) } }); tokens .filter(({ depth, type }) => type == "heading" && depth > 3) - .forEach((t) => { - if (t.text && t.type && t.type === "heading") { - t.tokens - .filter(({ type }) => type === "text") - .forEach(({ text }) => foundHeadings.push(text)); + .forEach(({ type, text }) => { + if (text && type === "heading") { + // console.log("heading", t); + foundHeadings.push(text) } }); return foundHeadings; @@ -75,13 +73,10 @@ const main = async () => { //collect if (!!!i) return - if (reqKeys && !reqKeys.include) { - reqKeys = Object.keys(reqKeys); - } var req = !!reqKeys?.includes(k); var path = [attr, k].filter((s) => !!s).join("."); if (i.properties && Object.keys(i.properties).length) { - props.push([path, "object", req, i.const]); + props.push([path, "object", req, i.default || i.const]); } else if (i.additionalProperties) { if (i.additionalProperties.oneOf) { props.push([ @@ -91,19 +86,19 @@ const main = async () => { i.const, ]); } else { - props.push([path, i.additionalProperties.type, req, i.const]); + props.push([path, i.additionalProperties.type, req, i.default || i.const]); } } else if (i.items) { - props.push([path, "array", req, i.const]); + props.push([path, "array", req, i.default || i.const]); } else if (i.type) { if (i.const) path = `${path}: ${i.const}`; - props.push([path, i.type, req, i.const]); + props.push([path, i.type, req, i.default || i.const]); } else if (i.const) { - props.push([`${path}: ${i.const}`, "string", req, i.const]); + props.push([`${path}: ${i.const}`, "string", req, i.default || i.const]); } else if (i.enum?.length) { - i.enum.forEach((e) => props.push([`${path}: ${e}`, e, req, i.const])); + i.enum.forEach((e) => props.push([`${path}: ${e}`, e, req, i.default || i.const])); } else if (i.const) { - props.push([path, i.const, req, i.const]); + props.push([path, i.const, req, i.default || i.const]); } else if (i.oneOf) { props.push([ path, @@ -115,6 +110,7 @@ const main = async () => { i.const, ]); } + // console.log('props', JSON.stringify(props)); }); return props; } @@ -229,7 +225,7 @@ const main = async () => { var filename = `${name}.md`; var filePath = `${foldername}/${filename}`; // console.log(filePath, props); - var attrs = getObjProps(null, props, []); + var schemaAttrs = getObjProps(null, props, []); if (fs.existsSync(filePath)) { var fullMdContent = fs.readFileSync(filePath, "utf8") @@ -237,12 +233,16 @@ const main = async () => { fullMdContent = fullMdContent.replace(//g, (_, p1) => (fs.readFileSync(path.resolve(foldername, p1), "utf8").toString()) ); + var mdAttrs = getPageProps(marked.lexer(fullMdContent)); + + // console.log('mdAttrs', mdAttrs) + // console.log('schemaAttrs', schemaAttrs) // get page headers and schema props - var pageHeaders = getPageProps(marked.lexer(fullMdContent)).sort().filter((value, index, array) => + var pageHeaders = mdAttrs.filter((value, index, array) => array.indexOf(value) === index ); - var schemaProps = attrs.map((a) => a[0]).sort().filter((value, index, array) => + var schemaProps = schemaAttrs.map((a) => (`${a[0]}${a[2]==true?'\\*':''}`)).filter((value, index, array) => array.indexOf(value) === index ); diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md index 0b9275f4..1601cedf 100644 --- a/src/reference/config/bindings/.partials/cataloged.md +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -12,13 +12,13 @@ To map defined catalog for schema retrieval based on catalog specific parameters > `subject` > `version` -#### catalog.strategy +#### catalog.strategy\* > `enum` [ "topic" ] To determine the subject based on the specified strategy -#### catalog.subject +#### catalog.subject\* > `string` @@ -30,7 +30,7 @@ Unique identifier for schema categorization in the catalog. Specific iteration or version of a registered schema in the defined catalog. -#### catalog.id +#### catalog.id\* > `integer` diff --git a/src/reference/config/bindings/.partials/options-http-auth.md b/src/reference/config/bindings/.partials/options-http-auth.md index 1dd9b848..eeed25fc 100644 --- a/src/reference/config/bindings/.partials/options-http-auth.md +++ b/src/reference/config/bindings/.partials/options-http-auth.md @@ -1,4 +1,4 @@ -#### authorization.credentials +#### authorization.credentials\* > `object` diff --git a/src/reference/config/bindings/.partials/options-kafka-topics.md b/src/reference/config/bindings/.partials/options-kafka-topics.md index 99943eed..56e0cf4f 100644 --- a/src/reference/config/bindings/.partials/options-kafka-topics.md +++ b/src/reference/config/bindings/.partials/options-kafka-topics.md @@ -1,4 +1,4 @@ -#### topics[].name\* +#### topics[].name > `string` @@ -10,7 +10,7 @@ Topic name. Enforce validation for key -#### key.model +#### key.model\* > `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] @@ -22,7 +22,7 @@ A schema or type to validate the topic's key. Enforce validation for value -#### value.model +#### value.model\* > `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] diff --git a/src/reference/config/bindings/.partials/options-mqtt-auth.md b/src/reference/config/bindings/.partials/options-mqtt-auth.md index 34f41e6e..4945446e 100644 --- a/src/reference/config/bindings/.partials/options-mqtt-auth.md +++ b/src/reference/config/bindings/.partials/options-mqtt-auth.md @@ -1,4 +1,4 @@ -#### authorization.credentials +#### authorization.credentials\* > `object` diff --git a/src/reference/config/bindings/.partials/options-tls.md b/src/reference/config/bindings/.partials/options-tls.md index fd349c06..3db31ee1 100644 --- a/src/reference/config/bindings/.partials/options-tls.md +++ b/src/reference/config/bindings/.partials/options-tls.md @@ -28,7 +28,7 @@ A list of reference names for the Vault signer certificate. Trust CA certificates. -#### tls.sni\* +#### tls.sni > `array` of `string` diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md index d2c5aa48..fa47ec68 100644 --- a/src/reference/config/bindings/amqp/.partials/routes.md +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -51,7 +51,7 @@ Link address. Send or receive, or both. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index 290f414f..af50cead 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -10,7 +10,7 @@ specs specific options To map defined catalog for schema retrieval based on catalog specific parameters. -#### catalog.subject +#### catalog.subject\* > `string` @@ -82,7 +82,7 @@ authorization: authorization: Bearer {credentials} ``` -#### authorization.credentials +#### authorization.credentials\* > `object` @@ -142,7 +142,7 @@ A list of reference names for the Vault signer certificate. Trust CA certificates. -#### tls.sni\* +#### tls.sni > `array` of `string` diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index ed6b5d03..0c74931d 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -148,7 +148,7 @@ authorization: -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 218a58a6..4051bdaf 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -149,7 +149,7 @@ authorization: -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/fan/server.md b/src/reference/config/bindings/fan/server.md index a657b1a9..efa39265 100644 --- a/src/reference/config/bindings/fan/server.md +++ b/src/reference/config/bindings/fan/server.md @@ -12,7 +12,7 @@ The fan server binding behaves as an `fan-in` and `fan-out` `server`. The `serve ## Configuration (\* required) -### exit\* +### exit > `string` diff --git a/src/reference/config/bindings/grpc-kafka/.partials/options.md b/src/reference/config/bindings/grpc-kafka/.partials/options.md index 60d64097..b53212c2 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/options.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/options.md @@ -55,7 +55,7 @@ The `grpc` metadata header name for the last `message-id` seen when resuming a s Kafka request message headers injected when adapting `grpc` request-response streams to `kafka` topic streams. -#### correlation.headers +#### correlation.headers\* > `map` of `name: value` properties diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index 05d90901..12180f09 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -94,7 +94,7 @@ Each metadata header value can be `string` or `object` with `base64` property. Base64 encoded value for binary metadata header. -#### routes[].exit\* +#### routes[].exit > `string` @@ -107,7 +107,7 @@ routes: exit: kafka_cache_client ``` -#### routes[].with\* +#### routes[].with > **oneOf**: [fetch](#with-capability-fetch) | [produce](#with-capability-produce) @@ -125,7 +125,7 @@ with: capability: produce ``` -#### with.capability: fetch +#### with.capability: fetch\* > `object` @@ -147,7 +147,7 @@ with: custom-text: custom-value ``` -#### with.topic +#### with.topic\* > `string` @@ -171,7 +171,7 @@ The filter criteria for the Kafka message key. The filter criteria for the Kafka message headers. -#### with.capability: produce +#### with.capability: produce\* > `object` @@ -192,7 +192,7 @@ with: reply-to: responses ``` -#### with.topic +#### with.topic\* > `string` @@ -216,7 +216,7 @@ The Kafka message key to include with each message. The Kafka message headers to inject with each message. -#### with.reply-to +#### with.reply-to\* > `string` diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index dcb2ddc0..1d32e025 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -69,7 +69,7 @@ Each metadata header value can be `string` or `object` with `base64` property. Base64 encoded value for binary metadata header. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 1b32cddf..6d189ba2 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -23,7 +23,7 @@ The grpc server binding adapts `http` request-response streams to `grpc` request To map defined catalog for schema retrieval based on catalog specific parameters. -#### catalog.subject +#### catalog.subject\* > `string` diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md index a85c6edb..f47940a1 100644 --- a/src/reference/config/bindings/http-filesystem/.partials/routes.md +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -39,13 +39,13 @@ routes: - path: /{path} ``` -#### when[].path\* +#### when[].path > `string` Path with optional embedded parameter names, such as `/{path}`. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/http-kafka/.partials/options.md b/src/reference/config/bindings/http-kafka/.partials/options.md index 4c8c2b6b..16477cb0 100644 --- a/src/reference/config/bindings/http-kafka/.partials/options.md +++ b/src/reference/config/bindings/http-kafka/.partials/options.md @@ -20,7 +20,7 @@ options: HTTP request header used to specify the idempotency key when adapting `http` request-response streams to `kafka` topic streams. -#### idempotency.header +#### idempotency.header\* > `string` | Default: `"idempotency-key"` @@ -32,7 +32,7 @@ HTTP request header name for idempotency key. Kafka request message headers injected when adapting `http` request-response streams to `kafka` topic streams. -#### correlation.headers +#### correlation.headers\* > `map` of `name: value` properties diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index 24be66d4..434cf32a 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -103,7 +103,7 @@ HTTP Method, such as `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `CONNECT`, `OPTIONS Path with optional embedded parameter names, such as `/{topic}`. -#### routes[].exit\* +#### routes[].exit > `string` @@ -134,7 +134,7 @@ with: capability: produce ``` -#### with.capability: fetch +#### with.capability: fetch\* > `object` @@ -159,7 +159,7 @@ with: path: /- ``` -#### with.topic +#### with.topic\* > `string` @@ -189,7 +189,7 @@ Message headers, with value optionally referencing path parameter such as `${par Merge multiple Kafka messages into a unified HTTP response. Kafka merge configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. -#### merge.content-type: application/json +#### merge.content-type: application/json\* > `const` @@ -205,19 +205,19 @@ Describes how to patch initial HTTP response to include one or more Kafka messag Kafka merge patch configuration for matched route when adapting `http` request-response streams to `kafka` topic streams where all messages are fetched and must be merged into a unified `http` response. -#### patch.initial: [] +#### patch.initial: []\* > `const` Initial JSON value. -#### patch.path: /- +#### patch.path: /-\* > `const` JSON Patch path to include each Kafka message in unified HTTP response. -#### with.capability: produce +#### with.capability: produce\* > `object` @@ -244,7 +244,7 @@ with: location: /items/${params.id};cid=${correlationId} ``` -#### with.topic +#### with.topic\* > `string` diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 296adae4..741d17ce 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -9,7 +9,7 @@ Enforce validation for the request content. -#### content.model +#### content.model\* > `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] @@ -37,7 +37,7 @@ A schema or type to validate the request content. Enforce validation for path -#### path.model +#### path.model\* > `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] @@ -47,7 +47,7 @@ Enforce validation for path Enforce validation for query -#### query.model +#### query.model\* > `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] @@ -80,7 +80,7 @@ headers: maxLength: 100 ``` -#### headers.model +#### headers.model\* > `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index 444cfdab..92fba136 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -47,7 +47,7 @@ routes: Header name value pairs (all match). -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 1e073494..6c4db7c5 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -45,7 +45,7 @@ options: Access control policy for the `HTTP` protocol. -#### access-control.policy\* +#### access-control.policy > `enum` [ "same-origin" , "cross-origin" ] diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index e2cd8028..0bd2c541 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -47,7 +47,7 @@ routes: method: example.EchoService/* ``` -#### when[].topic +#### when[].topic\* > `string` @@ -65,7 +65,7 @@ The name of a Kafka topic for requests. Header name value pairs (all match). -#### when[].reply-to +#### when[].reply-to\* > `string` @@ -77,7 +77,7 @@ The name of the Kafka topic for correlated responses. Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. -#### routes[].exit\* +#### routes[].exit > `string` @@ -102,13 +102,13 @@ with: authority: localhost:7151 ``` -#### with.scheme +#### with.scheme\* > `string` The `grpc` request scheme. -#### with.authority +#### with.authority\* > `string` diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index c85757af..6c6ef4fd 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -24,13 +24,13 @@ routes: List of conditions (any match) to match this route. Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-route-matches) -#### when[].topic\* +#### when[].topic > `string` Topic name pattern. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/options.md b/src/reference/config/bindings/mqtt-kafka/.partials/options.md index 6c563b8f..117f3e88 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/options.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/options.md @@ -15,7 +15,7 @@ options: server: mqtt-1.example.com:1883 ``` -#### options.topics +#### options.topics\* > `object` @@ -73,7 +73,7 @@ options: MQTT `publish`-specific options. -#### publish.qosMax +#### publish.qosMax\* > `enum` [ "at_most_once", "at_least_once", "exactly_once" ] | default: "exactly_once" diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md index 862530db..367e0973 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -81,7 +81,7 @@ Array of MQTT topic filters matching topic names for subscribe. MQTT topic filter pattern. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index 46526e2b..39a650a1 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -68,7 +68,7 @@ Array of MQTT topic names for subscribe capability. > `string` -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 1f7507f6..23b90432 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -60,7 +60,7 @@ Supported protocol versions. Topic configuration. -#### topics[].name\* +#### topics[].name > `string` @@ -72,7 +72,7 @@ Topic name. Enforce validation for content -#### content.model +#### content.model\* > `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] @@ -91,7 +91,7 @@ user-properties: range: 0-100 ``` -#### user-properties.model +#### user-properties.model\* > `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index bc1a6506..f6b64660 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -20,7 +20,7 @@ options: OpenAPI and AsyncAPI specs definition. -#### specs.openapi +#### specs.openapi\* > `object` of `name: value` properties @@ -30,7 +30,7 @@ OpenAPI and AsyncAPI specs definition. catalog specific options. -#### catalog.subject +#### catalog.subject\* > `string` @@ -42,7 +42,7 @@ Subject name used when storing the catalog artifact. Catalog artifact version to use. -#### specs.asyncapi +#### specs.asyncapi\* > `object` of `name: value` properties @@ -52,7 +52,7 @@ Catalog artifact version to use. `catalog` catalog specific options. -#### catalog.subject +#### catalog.subject\* > `string` diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md index d33759d2..0670376e 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -36,7 +36,7 @@ OpenAPI spec identifier that matches from the `openapi` binding request stream. OpenAPI OperationId that can be mapped between OpenAPI and AsyncAPI spec -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index 44caeb19..aa09cb7c 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -28,7 +28,7 @@ options: catalog specific options. -#### catalog.subject +#### catalog.subject\* > `string` @@ -70,7 +70,7 @@ authorization: authorization: Bearer {credentials} ``` -#### authorization.credentials +#### authorization.credentials\* > `object` @@ -148,7 +148,7 @@ A list of reference names for the Vault signer certificate. Trust CA certificates. -#### tls.sni\* +#### tls.sni > `array` of `string` diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index 2502c2a8..554de621 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -126,7 +126,7 @@ Port number. > `string` -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md index 09171851..42a26066 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/routes.md +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -41,13 +41,13 @@ routes: - path: /items ``` -#### when[].path\* +#### when[].path > `string` Path with optional embedded parameter names, such as `/{topic}`. -#### routes[].exit\* +#### routes[].exit > `string` @@ -98,7 +98,7 @@ Message headers, with value optionally referencing path parameter such as `${par Defines the SSE event syntax used when delivering Kafka messages to SSE clients. -#### event.id\* +#### event.id > `enum` [ `"${etag}"`, `"["${base64(key)}","${etag}"]"` ] | Default: `"${etag}"` diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index 9a4a9b07..50aa89b9 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -33,7 +33,7 @@ The path selector. Enforce validation for the request content. -#### content.model +#### content.model\* > `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md index fc978049..f89e22e2 100644 --- a/src/reference/config/bindings/sse/.partials/routes.md +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -40,13 +40,13 @@ routes: - path: /items ``` -#### when[].path\* +#### when[].path > `string` Path pattern. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md index 43b1e471..f25b580e 100644 --- a/src/reference/config/bindings/tcp/server.md +++ b/src/reference/config/bindings/tcp/server.md @@ -22,7 +22,7 @@ Conditional `server`-specific routes. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/tls/.partials/options.md b/src/reference/config/bindings/tls/.partials/options.md index e5071e86..f0e62237 100644 --- a/src/reference/config/bindings/tls/.partials/options.md +++ b/src/reference/config/bindings/tls/.partials/options.md @@ -44,7 +44,7 @@ A list of reference names for the Vault signer certificate. Trust CA certificates. -#### options.sni\* +#### options.sni > `array` of `string` diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index 4e1197ec..0a760c34 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -55,7 +55,7 @@ Application protocol. Port number(s), including port number ranges. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index 7627b461..c3a6e844 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -61,7 +61,7 @@ Authority pattern. Path pattern. -#### routes[].exit\* +#### routes[].exit > `string` diff --git a/src/reference/config/catalogs/.partials/options-schema-registry.md b/src/reference/config/catalogs/.partials/options-schema-registry.md index 23a00f1f..391a28ce 100644 --- a/src/reference/config/catalogs/.partials/options-schema-registry.md +++ b/src/reference/config/catalogs/.partials/options-schema-registry.md @@ -2,7 +2,7 @@ > `object` -#### options.url\* +#### options.url > `string` diff --git a/src/reference/config/catalogs/apicurio-registry.md b/src/reference/config/catalogs/apicurio-registry.md index 2de405a8..3536d342 100644 --- a/src/reference/config/catalogs/apicurio-registry.md +++ b/src/reference/config/catalogs/apicurio-registry.md @@ -28,7 +28,7 @@ catalog: > `object` -#### options.url\* +#### options.url > `string` diff --git a/src/reference/config/catalogs/filesystem.md b/src/reference/config/catalogs/filesystem.md index 535b14b1..d4643126 100644 --- a/src/reference/config/catalogs/filesystem.md +++ b/src/reference/config/catalogs/filesystem.md @@ -25,7 +25,7 @@ catalogs: > `object` -#### options.subjects\* +#### options.subjects > `object` as map of named objects diff --git a/src/reference/config/catalogs/inline.md b/src/reference/config/catalogs/inline.md index 1c44533d..dfee1f97 100644 --- a/src/reference/config/catalogs/inline.md +++ b/src/reference/config/catalogs/inline.md @@ -39,7 +39,7 @@ catalog: > `object` -#### options.subjects\* +#### options.subjects > `object` as map of named objects diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index fea643c5..71534680 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -1,4 +1,4 @@ -### catalog\* +### catalog > `object` @@ -12,7 +12,7 @@ To map defined catalog for schema retrieval based on catalog specific parameters > `subject` > `version` -#### catalog.id +#### catalog.id\* > `integer` @@ -24,13 +24,13 @@ Define specific schema id to refer from catalog. Specific iteration or version of a registered schema in the defined catalog. -#### catalog.strategy +#### catalog.strategy\* > `enum` [ "topic" ] To determine the subject based on the specified strategy -#### catalog.subject +#### catalog.subject\* > `string` diff --git a/src/reference/config/models/avro.md b/src/reference/config/models/avro.md index aff5cd12..edae95e4 100644 --- a/src/reference/config/models/avro.md +++ b/src/reference/config/models/avro.md @@ -24,7 +24,7 @@ catalog: ## Configuration (\* required) -### model: avro\* +### model: avro Specifies the model is `avro`. diff --git a/src/reference/config/models/double.md b/src/reference/config/models/double.md index 14063b80..8f184c20 100644 --- a/src/reference/config/models/double.md +++ b/src/reference/config/models/double.md @@ -14,7 +14,7 @@ model: double ## Configuration (\* required) -### model: double\* +### model: double Specifies the model is a `double`. diff --git a/src/reference/config/models/float.md b/src/reference/config/models/float.md index faa7e8e0..88fb32b8 100644 --- a/src/reference/config/models/float.md +++ b/src/reference/config/models/float.md @@ -14,7 +14,7 @@ model: float ## Configuration (\* required) -### model: float\* +### model: float Specifies the model is a `float`. diff --git a/src/reference/config/models/int32.md b/src/reference/config/models/int32.md index 7d8dfe8e..ab26450b 100644 --- a/src/reference/config/models/int32.md +++ b/src/reference/config/models/int32.md @@ -15,7 +15,7 @@ model: int32 ## Configuration (\* required) -### model: int32\* +### model: int32 Specifies the model is a `int32`. diff --git a/src/reference/config/models/int64.md b/src/reference/config/models/int64.md index e970fe2c..91460a19 100644 --- a/src/reference/config/models/int64.md +++ b/src/reference/config/models/int64.md @@ -14,7 +14,7 @@ model: int64 ## Configuration (\* required) -### model: int64\* +### model: int64 Specifies the model is a `int64`. diff --git a/src/reference/config/models/json.md b/src/reference/config/models/json.md index 2c7bfae4..b4602315 100644 --- a/src/reference/config/models/json.md +++ b/src/reference/config/models/json.md @@ -23,7 +23,7 @@ catalog: ## Configuration (\* required) -### model: json\* +### model: json Specifies the model is `json`. diff --git a/src/reference/config/models/protobuf.md b/src/reference/config/models/protobuf.md index 16148550..37aec51f 100644 --- a/src/reference/config/models/protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -26,7 +26,7 @@ catalog: ## Configuration (\* required) -### model: protobuf\* +### model: protobuf > `string` @@ -38,7 +38,7 @@ Specifies the model is a `protobuf`. Transforms the model from this data type to the Protobuf schema on produce and to this data type from the Protobuf schema on consume. -### catalog\* +### catalog > `object` @@ -54,12 +54,8 @@ To map defined catalog for schema retrieval based on catalog specific parameters > `subject` > `version` > `record` ------ -> `schema` -> `version` -> `record` -#### catalog.id +#### catalog.id\* > `integer` @@ -71,19 +67,13 @@ Define specific schema id to refer from catalog. Specific iteration or version of a registered schema in the defined catalog. -#### catalog.strategy +#### catalog.strategy\* > `enum` [ "topic" ] To determine the subject based on the specified strategy -#### catalog.subject - -> `string` - -Unique identifier for schema categorization in the catalog. - -#### catalog.schema +#### catalog.subject\* > `string` diff --git a/src/reference/config/models/string.md b/src/reference/config/models/string.md index 72edf923..9d775f62 100644 --- a/src/reference/config/models/string.md +++ b/src/reference/config/models/string.md @@ -12,7 +12,7 @@ Defines a model to enforce validation for string data. ## Configuration (\* required) -### model: string\* +### model: string Specifies the model is a `string`. diff --git a/src/reference/config/telemetry/exporters/otlp.md b/src/reference/config/telemetry/exporters/otlp.md index b0ab5166..605b610d 100644 --- a/src/reference/config/telemetry/exporters/otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -56,7 +56,7 @@ Interval in seconds to push data to the collector. Specifies what signals should be exported. The default behavior is to export all supported signals. -#### options.endpoint +#### options.endpoint\* > `object` diff --git a/src/reference/config/telemetry/exporters/prometheus.md b/src/reference/config/telemetry/exporters/prometheus.md index 84ae27fe..a135defd 100644 --- a/src/reference/config/telemetry/exporters/prometheus.md +++ b/src/reference/config/telemetry/exporters/prometheus.md @@ -45,13 +45,13 @@ options: Contains `prometheus` endpoints. -#### endpoints[].scheme +#### endpoints[].scheme\* > `enum` [ "http" ] URL scheme to accept for endpoint. -#### endpoints[].port +#### endpoints[].port\* > `int` diff --git a/src/reference/config/vaults/filesystem.md b/src/reference/config/vaults/filesystem.md index 97c250a1..eb968fda 100644 --- a/src/reference/config/vaults/filesystem.md +++ b/src/reference/config/vaults/filesystem.md @@ -49,7 +49,7 @@ options: Private keys. -#### keys.store\* +#### keys.store > `string` @@ -74,7 +74,7 @@ Keystore password. Trust certificates. -#### trust.store\* +#### trust.store > `string` @@ -99,7 +99,7 @@ Keystore password. Signer certificates. -#### signers.store\* +#### signers.store > `string` From 5bb84d3539b65bba92b832227ab89812a4102608 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 28 Aug 2024 15:11:51 -0400 Subject: [PATCH 29/54] fix: specs catalog ref --- .../config/bindings/asyncapi/.partials/server.yaml | 10 +++++++--- .../bindings/openapi-asyncapi/.partials/options.md | 12 ++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/reference/config/bindings/asyncapi/.partials/server.yaml b/src/reference/config/bindings/asyncapi/.partials/server.yaml index ecbd4082..7c6b1fbf 100644 --- a/src/reference/config/bindings/asyncapi/.partials/server.yaml +++ b/src/reference/config/bindings/asyncapi/.partials/server.yaml @@ -1,7 +1,11 @@ - asyncapi_server: + mqtt_asyncapi_server: type: asyncapi kind: server options: specs: - my-mqtt-api-spec: mqtt/asyncapi.yaml - exit: asyncapi_proxy + my-mqtt-api-spec: + catalog: + my_catalog: + subject: mqtt-streetlights + version: latest + exit: south_kafka_proxy diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index f6b64660..39624bbe 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -9,9 +9,17 @@ options: specs: openapi: - my-openapi-spec: spec/openapi.yaml + my-openapi-spec: + catalog: + my_catalog: + subject: petstore + version: latest asyncapi: - my-asyncapi-spec: spec/asyncapi.yaml + my-asyncapi-spec: + catalog: + my_catalog: + subject: petstore + version: latest ``` #### options.specs From bdf4e1d10a990c08f4b1dbca6aa360588ba0d2ca Mon Sep 17 00:00:00 2001 From: AJ Date: Thu, 29 Aug 2024 17:09:16 -0400 Subject: [PATCH 30/54] fix: parse schema types and defaults --- .check-schema/index.js | 193 ++++++-- .check-schema/zilla-schema.json | 449 +++++++++++++----- .../config/bindings/.partials/cataloged.md | 28 +- .../bindings/.partials/options-http-auth.md | 6 +- .../bindings/.partials/options-kafka-sasl.md | 10 +- .../.partials/options-kafka-topics.md | 12 +- .../config/bindings/.partials/options-tcp.md | 2 +- .../config/bindings/.partials/options-tls.md | 6 +- .../bindings/.partials/telemetry-grpc.md | 2 +- .../bindings/.partials/telemetry-http.md | 2 +- .../config/bindings/.partials/telemetry.md | 2 +- .../config/bindings/amqp/.partials/routes.md | 4 +- .../bindings/asyncapi/.partials/options.md | 26 +- .../bindings/asyncapi/.partials/routes.md | 2 +- .../config/bindings/asyncapi/client.md | 12 +- .../config/bindings/asyncapi/proxy.md | 12 +- .../config/bindings/asyncapi/server.md | 12 +- .../bindings/filesystem/.partials/options.md | 2 +- .../bindings/grpc-kafka/.partials/options.md | 16 +- .../bindings/grpc-kafka/.partials/routes.md | 24 +- .../config/bindings/grpc/.partials/routes.md | 4 +- src/reference/config/bindings/grpc/server.md | 4 +- .../http-filesystem/.partials/routes.md | 2 +- .../bindings/http-kafka/.partials/options.md | 8 +- .../bindings/http-kafka/.partials/routes.md | 26 +- .../config/bindings/http/.partials/options.md | 46 +- .../config/bindings/http/.partials/routes.md | 4 +- src/reference/config/bindings/http/server.md | 29 +- .../bindings/kafka-grpc/.partials/options.md | 12 +- .../bindings/kafka-grpc/.partials/routes.md | 8 +- .../bindings/kafka-grpc/remote_server.md | 13 + .../config/bindings/kafka/.partials/routes.md | 2 +- .../config/bindings/kafka/cache_server.md | 2 +- .../bindings/mqtt-kafka/.partials/options.md | 2 +- .../bindings/mqtt-kafka/.partials/routes.md | 4 +- .../config/bindings/mqtt/.partials/routes.md | 2 +- src/reference/config/bindings/mqtt/client.md | 2 +- src/reference/config/bindings/mqtt/server.md | 16 +- .../openapi-asyncapi/.partials/options.md | 12 +- .../openapi-asyncapi/.partials/routes.md | 4 +- .../bindings/openapi/.partials/options.md | 26 +- .../config/bindings/proxy/.partials/routes.md | 8 +- .../bindings/sse-kafka/.partials/routes.md | 6 +- .../config/bindings/sse/.partials/options.md | 4 +- .../config/bindings/sse/.partials/routes.md | 2 +- .../config/bindings/tcp/.partials/options.md | 2 +- .../config/bindings/tcp/.partials/routes.md | 6 +- .../config/bindings/tls/.partials/options.md | 6 +- .../config/bindings/tls/.partials/routes.md | 4 +- .../config/bindings/ws/.partials/routes.md | 2 +- .../.partials/options-schema-registry.md | 4 +- .../config/catalogs/apicurio-registry.md | 8 +- src/reference/config/catalogs/aws-glue.md | 4 +- src/reference/config/catalogs/filesystem.md | 2 +- src/reference/config/catalogs/inline.md | 4 +- src/reference/config/guards/jwt.md | 10 +- .../config/models/.partials/cataloged.md | 6 +- .../config/models/.partials/integer.md | 11 + .../config/models/.partials/number.md | 10 +- src/reference/config/models/avro.md | 4 +- src/reference/config/models/double.md | 2 + src/reference/config/models/float.md | 6 + src/reference/config/models/int32.md | 4 +- src/reference/config/models/int64.md | 4 +- src/reference/config/models/json.md | 2 + src/reference/config/models/protobuf.md | 10 +- src/reference/config/models/string.md | 8 +- src/reference/config/overview.md | 10 +- .../telemetry/exporters/aws-cloudwatch.md | 4 +- .../config/telemetry/exporters/otlp.md | 6 +- .../config/telemetry/exporters/prometheus.md | 4 +- .../config/telemetry/exporters/syslog.md | 2 +- src/reference/config/vaults/filesystem.md | 15 +- 73 files changed, 839 insertions(+), 391 deletions(-) create mode 100644 src/reference/config/models/.partials/integer.md diff --git a/.check-schema/index.js b/.check-schema/index.js index 25fb6881..8355fc01 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -9,22 +9,53 @@ const main = async () => { // console.log("RefParser", JSON.stringify(schema)) var errors = []; - function getPageProps(tokens) { + function getExtraProps(o) { + return { + default: (o.default ? "`" + o.default + "`" : undefined), + pattern: (o.pattern ? "`" + (o.pattern?.replaceAll("\\", "\\\\") || "") + "`" : undefined), + minimum: (o.minimum ? "`" + o.minimum + "`" : undefined), + maximum: (o.maximum ? "`" + o.maximum + "`" : undefined) + }; + } + + function getType(i) { + // console.log(i); + var type = "`" + (i.type || "object") + "`"; + if (i.enum) type = "`enum`" + ` [ ${i.enum.map((e) => ("`" + e + "`")).join(", ")} ]`; + if (i.items?.enum) type = `${"`array`"}${i.items.enum ? " of `enum`" + ` [ ${i.items.enum.map((e) => ("`" + e + "`")).join(", ")} ]` : ""}`; + else if (i.items) type = `${"`array`"}${(i.items.type ? " of `" + (i.items.type) + "`" : "")}`; + return type; + } + + function getPageProps(pageTokens) { var foundHeadings = []; - tokens - .filter(({ depth, type }) => type == "heading" && depth == 3) - .forEach(({ type, text }) => { - if (text && type === "heading") { - // console.log("heading", t); - foundHeadings.push(text) - } - }); - tokens - .filter(({ depth, type }) => type == "heading" && depth > 3) - .forEach(({ type, text }) => { - if (text && type === "heading") { - // console.log("heading", t); - foundHeadings.push(text) + // console.log("tokens", tokens); + pageTokens + .forEach(({ type, depth, tokens }, i) => { + if (type === "heading" && depth >= 3) { + var h = [] + // console.log("tokens", tokens); + // console.log("heading", tokens[i + 1]); + // h.push(text) + tokens + .filter(({ type }) => type === "text") + .forEach(({ text }) => { + h.push(text) + }); + tokens + .filter(({ type }) => type === "escape") + .forEach(({ text }) => h.push(text === "*")); + if (h.length == 1) h.push(false); + if (pageTokens.length > i + 1 && pageTokens[i + 1].type === "blockquote") { + var b = pageTokens[i + 1]; + // console.log("blockquote", b); + b.tokens + .filter(({ type }) => type === "paragraph") + .forEach(({ text }) => { + h.push(...text.split(" | ")) + }); + } + foundHeadings.push(h) } }); return foundHeadings; @@ -38,7 +69,9 @@ const main = async () => { if (!i || !!i.deprecated) return //recurse + var patternProperties = false; if (i.patternProperties) { + patternProperties = true; i = i.patternProperties[Object.keys(i.patternProperties)[0]]; } if (i.properties && Object.keys(i.properties).length) { @@ -54,6 +87,10 @@ const main = async () => { .forEach(({ properties, required }) => props.push(...getObjProps(k, properties, required)) ); + i.allOf?.filter(({ properties }) => !!properties) + .forEach(({ properties, required }) => + props.push(...getObjProps(k, properties, required)) + ); i.items?.anyOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => props.push(...getObjProps(`${k}[]`, properties, required)) @@ -75,39 +112,51 @@ const main = async () => { if (!!!i) return var req = !!reqKeys?.includes(k); var path = [attr, k].filter((s) => !!s).join("."); + var type = getType(i); + if (patternProperties) type = "`object` as map of named:" + type; + if (i.properties && Object.keys(i.properties).length) { - props.push([path, "object", req, i.default || i.const]); + props.push([path, req, type, getExtraProps(i)]); } else if (i.additionalProperties) { if (i.additionalProperties.oneOf) { props.push([ path, - i.additionalProperties.oneOf.map(({ type }) => type).join(","), req, - i.const, + "`object` as map of named: " + i.additionalProperties.oneOf + .map(getType) + .join(" or ") + " properties" + , + getExtraProps(i) ]); } else { - props.push([path, i.additionalProperties.type, req, i.default || i.const]); + type = "`object` as map of named: `" + i.additionalProperties.type + "` properties"; + props.push([path, req, type, getExtraProps(i)]); } } else if (i.items) { - props.push([path, "array", req, i.default || i.const]); + props.push([path, req, type, getExtraProps(i)]); } else if (i.type) { - if (i.const) path = `${path}: ${i.const}`; - props.push([path, i.type, req, i.default || i.const]); + if (i.const) { + path = `${path}: ${i.const}`; + type = "`const`"; + } + props.push([path, req, type, getExtraProps(i)]); } else if (i.const) { - props.push([`${path}: ${i.const}`, "string", req, i.default || i.const]); + props.push([`${path}: ${i.const}`, req, "`const`", getExtraProps(i)]); } else if (i.enum?.length) { - i.enum.forEach((e) => props.push([`${path}: ${e}`, e, req, i.default || i.const])); - } else if (i.const) { - props.push([path, i.const, req, i.default || i.const]); + i.enum.forEach((e) => props.push([`${path}: ${e}`, req, type, getExtraProps(i)])); + // } else if (i.const) { + // props.push([path, req, type, getExtraProps(i)]); } else if (i.oneOf) { props.push([ path, - i.oneOf - .filter(({ type }) => !!type) - .map(({ type }) => type) - .join(","), req, - i.const, + i.oneOf + .map(getType) + .filter((value, index, array) => + array.indexOf(value) === index + ) + .join(", "), + getExtraProps(i) ]); } // console.log('props', JSON.stringify(props)); @@ -128,6 +177,7 @@ const main = async () => { ...(props?.properties || {}), ...(then.properties || {}), options: (then.properties?.options != false ? { + ...then.properties?.options, properties: { ...(props?.properties?.options?.properties || {}), ...(then.properties?.options?.properties || {}), @@ -151,13 +201,16 @@ const main = async () => { ...(then.properties || {}), ...(properties || {}), options: (then.properties?.options != false ? { + ...then.properties?.options, properties: { ...(then.properties?.options?.properties || {}), ...(properties?.options?.properties || {}), } } : {}), routes: (then.properties?.routes != false ? { + ...then.properties?.routes, items: { + ...then.properties?.routes?.items, properties: { ...(bindings.properties?.routes?.items?.properties || {}), ...(then.properties?.routes?.items?.properties || {}), @@ -178,7 +231,9 @@ const main = async () => { ...bindings.properties, ...(then.properties || {}), routes: (then.properties?.routes != false ? { + ...then.properties?.routes, items: { + ...then.properties?.routes?.items, properties: { ...(bindings.properties?.routes?.items?.properties || {}), ...(then.properties?.routes?.items?.properties || {}), @@ -239,27 +294,75 @@ const main = async () => { // console.log('schemaAttrs', schemaAttrs) // get page headers and schema props - var pageHeaders = mdAttrs.filter((value, index, array) => - array.indexOf(value) === index - ); - var schemaProps = schemaAttrs.map((a) => (`${a[0]}${a[2]==true?'\\*':''}`)).filter((value, index, array) => - array.indexOf(value) === index - ); + var pageHeaders = mdAttrs.reduce((o, a) => ( + { + ...o, [a[0]]: { + name: a[0], + required: a[1] || false, + type: a[2] || '', + extra: (a[3] || ''), + } + }), {}); + var schemaProps = schemaAttrs.reduce((o, a) => ( + { + ...o, [a[0]]: { + name: a[0], + required: a[1] || false, + type: a[2] || '', + extra: (a[3] ? Object.entries(a[3]).filter(([_, o]) => (!!o)).map(([k, o]) => (`${k.charAt(0).toUpperCase() + k.slice(1).toLowerCase()}: ${o}`)).join(' ') : ''), + } + }), {}); + + // console.log('pageHeaders', pageHeaders) + // console.log('schemaProps', schemaProps) // print diff check - var addDiff = schemaProps.filter((x) => - !pageHeaders.includes(x) - ) - var removeDiff = pageHeaders.filter((x) => - !schemaProps.includes(x) - ) + // Object.entries(obj).forEach(([k, i]) { name, required, type, default } + var addDiff = Object.entries(schemaProps).map(([k, o]) => { + // console.log(k, o, pageHeaders[k]); + if (pageHeaders[k] && + (pageHeaders[k].name != o.name + || pageHeaders[k].required != o.required + || pageHeaders[k].type != o.type + || pageHeaders[k].extra != o.extra) + ) { + var p = { + name: o.name + }; + if (pageHeaders[k].required != o.required) p.required = o.required; + if (pageHeaders[k].type != o.type) p.type = o.type; + if (pageHeaders[k].extra != o.extra) p.extra = o.extra?.replaceAll("\\\\", "\\"); + return p + } else if (!pageHeaders[k]) { + return o + } + }).filter((x) => !!x); + var removeDiff = Object.entries(pageHeaders).map(([k, o]) => { + if (schemaProps[k] && + (schemaProps[k].name != o.name + || schemaProps[k].required != o.required + || schemaProps[k].type != o.type + || schemaProps[k].extra != o.extra) + ) { + var p = { + name: o.name + }; + if (schemaProps[k].required != o.required) p.required = o.required; + if (schemaProps[k].type != o.type) p.type = o.type; + if (schemaProps[k].extra != o.extra) p.extra = o.extra?.replaceAll("\\\\", "\\"); + return p + } else if (!schemaProps[k]) { + return o + } + }).filter((x) => !!x); + console.log(folder, name, "add", addDiff, "remove", removeDiff); if (addDiff.length + removeDiff.length) { process.exitCode = 1; - console.log(folder, name, "add", addDiff, "remove", removeDiff); + // console.log(folder, name, "add", addDiff, "remove", removeDiff); // console.log("findings", folder, name, schemaProps, pageHeaders); } } else { - errors.push(`missing ${name}`); + errors.push(`missing ${folder} ${name}`); process.exitCode = 1; } }); diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 5f9754fd..2254cf9c 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -333,15 +333,16 @@ "options": { "properties": { "interval": { - "type": "number" + "type": "number", + "default": 30 }, "signals": { "type": "array", "items": { + "type": "string", "enum": [ "metrics", - "logs", - "traces" + "logs" ] } }, @@ -406,6 +407,7 @@ "endpoints": { "type": "array", "items": { + "type": "object", "properties": { "scheme": { "title": "Scheme", @@ -726,7 +728,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Authorization", + "title": "Guard", "type": "object", "properties": { "credentials": { @@ -901,7 +903,8 @@ "enum": [ "live", "historical" - ] + ], + "default": "historical" }, "deltaType": { "type": "string", @@ -911,11 +914,75 @@ ], "deprecated": true }, + "transforms": { + "title": "Transforms", + "type": "array", + "oneOf": [ + { + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + } + }, + "additionalProperties": false + }, + "extract-key": { + "type": "string", + "additionalProperties": false + } + } + } + ] + }, + { + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + } + }, + "additionalProperties": false + } + } + } + ] + }, + { + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-key": { + "type": "string", + "additionalProperties": false + } + } + } + ] + } + ] + }, "key": { - "$ref": "#/$defs/converter" + "$ref": "#/$defs/converter/model" }, "value": { - "$ref": "#/$defs/converter" + "$ref": "#/$defs/converter/model" } } } @@ -1016,6 +1083,7 @@ "additionalProperties": false }, "tls": { + "type": "object", "properties": { "version": { "title": "Version", @@ -1050,10 +1118,7 @@ "title": "Application Protocols", "type": "array", "items": { - "type": [ - "string", - "null" - ] + "type": "string" } }, "mutual": { @@ -1063,7 +1128,8 @@ "required", "requested", "none" - ] + ], + "default": "none" }, "signers": { "title": "Vault Signer Certificates", @@ -1124,6 +1190,7 @@ "mqtt-kafka", "openapi", "openapi-asyncapi", + "pgsql", "proxy", "sse", "sse-kafka", @@ -1229,10 +1296,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "address": { @@ -1422,10 +1495,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "api-id": { @@ -1650,11 +1729,18 @@ ] }, "vault": false, + "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "method": { "title": "Method", @@ -1721,35 +1807,28 @@ }, "additionalProperties": false }, - "catalog": - { + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "object", - "patternProperties": - { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": - { - "type": "object", - "properties": - { - "subject": - { - "type": "string" - }, - "version": - { - "type": "string", - "default": "latest" - } - }, - "required": - [ - "subject" - ], - "additionalProperties": false + "properties": { + "subject": { + "type": "string" }, - "additionalProperties": false - } - } + "version": { + "type": "string", + "default": "latest" + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } + } } }, { @@ -1854,10 +1933,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "method": { "title": "Method", @@ -1905,6 +1990,7 @@ "title": "Filters", "type": "array", "items": { + "type": "object", "properties": { "key": { "title": "Key", @@ -1942,7 +2028,8 @@ "none", "leader_only", "in_sync_replicas" - ] + ], + "default": "in_sync_replicas" }, "key": { "title": "Key", @@ -2028,7 +2115,11 @@ "properties": { "policy": { "title": "Policy", - "type": "string" + "type": "string", + "enum": [ + "same-origin", + "cross-origin" + ] } }, "oneOf": [ @@ -2140,7 +2231,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" } } }, @@ -2151,7 +2242,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" } } }, @@ -2159,7 +2250,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" } } } @@ -2167,7 +2258,7 @@ "additionalProperties": false }, "content": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" }, "responses": { "type": "array", @@ -2197,12 +2288,12 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" } } }, "content": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" } }, "anyOf": [ @@ -2254,10 +2345,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "headers": { "title": "Headers", @@ -2332,10 +2429,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "path": { "title": "Path", @@ -2442,10 +2545,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "method": { "title": "Method", @@ -2453,7 +2562,8 @@ }, "path": { "title": "Path", - "type": "string" + "type": "string", + "pattern": "^/" } }, "additionalProperties": false @@ -2476,6 +2586,7 @@ "title": "Filters", "type": "array", "items": { + "type": "object", "properties": { "key": { "title": "Key", @@ -2549,7 +2660,8 @@ "none", "leader_only", "in_sync_replicas" - ] + ], + "default": "in_sync_replicas" }, "key": { "title": "Key", @@ -2622,10 +2734,16 @@ }, "vault": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -2676,10 +2794,10 @@ "type": "string" }, "key": { - "$ref": "#/$defs/converter" + "$ref": "#/$defs/converter/model" }, "value": { - "$ref": "#/$defs/converter" + "$ref": "#/$defs/converter/model" } } } @@ -2765,7 +2883,8 @@ "none", "leader_only", "in_sync_replicas" - ] + ], + "default": "in_sync_replicas" }, "idempotency": { "title": "Idempotency", @@ -2815,10 +2934,16 @@ } }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -2875,7 +3000,15 @@ ] } }, - "exit": false + "exit": false, + "entry": { + "title": "Entry", + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" + }, + "required": [ + "entry" + ] }, "required": [ "routes" @@ -2903,19 +3036,29 @@ }, "vault": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "session": { "title": "Session", "type": "array", "items": { - "client-id": { - "title": "Client Id", - "type": "string" + "type": "object", + "additionalProperties": false, + "properties": { + "client-id": { + "title": "Client Id", + "type": "string" + } } } }, @@ -2923,19 +3066,27 @@ "title": "Subscribe", "type": "array", "items": { - "topic": { - "title": "Topic", - "type": "string" + "type": "object", + "additionalProperties": false, + "properties": { + "topic": { + "title": "Topic", + "type": "string" + } } } }, "publish": { - "title": "Subscribe", + "title": "Publish", "type": "array", "items": { - "topic": { - "title": "Topic", - "type": "string" + "type": "object", + "additionalProperties": false, + "properties": { + "topic": { + "title": "Topic", + "type": "string" + } } } } @@ -2992,13 +3143,13 @@ "type": "string" }, "content": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" }, "user-properties": { "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" } } } @@ -3113,10 +3264,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "anyOf": [ { "properties": { @@ -3124,6 +3281,7 @@ "title": "Subscribe", "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -3141,6 +3299,7 @@ "title": "Publish", "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -3291,18 +3450,6 @@ "required": [ "exit" ] - }, - { - "properties": { - "routes": { - "required": [ - "exit" - ] - } - }, - "required": [ - "routes" - ] } ] }, @@ -3311,13 +3458,6 @@ "kind": { "const": "client" }, - "routes": { - "items": { - "properties": { - "exit": false - } - } - }, "exit": false } } @@ -3427,10 +3567,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "api-id": { "title": "ApiId", @@ -3477,6 +3623,38 @@ ] } }, + { + "if": { + "properties": { + "type": { + "const": "pgsql" + } + } + }, + "then": { + "properties": { + "type": { + "const": "pgsql" + }, + "kind": { + "enum": [ + "client", + "server" + ] + }, + "vault": false, + "options": false, + "routes": false + }, + "anyOf": [ + { + "required": [ + "exit" + ] + } + ] + } + }, { "if": { "properties": { @@ -3499,10 +3677,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "transport": { @@ -3656,7 +3840,7 @@ "type": "string" }, "content": { - "$ref": "#/$defs/validator" + "$ref": "#/$defs/validator/model" } }, "anyOf": [ @@ -3674,10 +3858,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "path": { "title": "Path", @@ -3727,10 +3917,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "path": { "title": "Path", @@ -3750,6 +3946,7 @@ "title": "Filters", "type": "array", "items": { + "type": "object", "properties": { "key": { "title": "Key", @@ -3827,10 +4024,16 @@ "$ref": "#/$defs/options/binding/tcp" }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "authority": { "title": "Authority", @@ -3942,10 +4145,16 @@ ] }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "authority": { "title": "Authority", @@ -3990,6 +4199,18 @@ } } }, + "if": { + "properties": { + "kind": { + "const": "server" + } + } + }, + "then": { + "required": [ + "vault" + ] + }, "anyOf": [ { "required": [ @@ -4019,7 +4240,19 @@ "const": "server" }, "options": { - "$ref": "#/$defs/options/binding/tls" + "$ref": "#/$defs/options/binding/tls", + "oneOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] } } }, @@ -4055,10 +4288,16 @@ }, "vault": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "protocol": { "title": "Subprotocol", @@ -4147,14 +4386,6 @@ ] }, "converter": { - "oneOf": [ - { - "$ref": "#/$defs/converter/types" - }, - { - "$ref": "#/$defs/converter/model" - } - ], "types": { "type": "string", "enum": [ @@ -4221,7 +4452,10 @@ "type": "object", "properties": { "strategy": { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, "version": { "type": "string", @@ -4426,7 +4660,10 @@ "type": "object", "properties": { "strategy": { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, "version": { "type": "string", @@ -4513,7 +4750,10 @@ "type": "object", "properties": { "strategy": { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, "version": { "type": "string", @@ -4601,22 +4841,16 @@ } }, "validator": { - "oneOf": [ - { - "$ref": "#/$defs/validator/types" - }, - { - "$ref": "#/$defs/validator/model" - } - ], "types": { "type": "string", "enum": [ + "avro", "double", "float", "int32", "int64", "json", + "protobuf", "string" ] }, @@ -4795,7 +5029,10 @@ "type": "object", "properties": { "strategy": { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, "version": { "type": "string", diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md index 1601cedf..8c8e0e47 100644 --- a/src/reference/config/bindings/.partials/cataloged.md +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -1,20 +1,38 @@ ### catalog -> `object` +> `object` as map of named:`array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. > `id` + +```yaml +catalog: + my_catalog: + id: unique-catalog-id +``` + ----- > `strategy` -> `version` + +```yaml +catalog: + my_catalog: + - strategy: topic +``` + ----- > `subject` -> `version` + +```yaml +catalog: + my_catalog: + subject: http +``` #### catalog.strategy\* -> `enum` [ "topic" ] +> `enum` [ `topic` ] To determine the subject based on the specified strategy @@ -26,7 +44,7 @@ Unique identifier for schema categorization in the catalog. #### catalog.version -> `string` | Default: `"latest"` +> `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. diff --git a/src/reference/config/bindings/.partials/options-http-auth.md b/src/reference/config/bindings/.partials/options-http-auth.md index eeed25fc..969b4265 100644 --- a/src/reference/config/bindings/.partials/options-http-auth.md +++ b/src/reference/config/bindings/.partials/options-http-auth.md @@ -6,18 +6,18 @@ Defines how to extract credentials from the HTTP request. #### credentials.cookies -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named cookie value pattern with `{credentials}`. #### credentials.headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. #### credentials.query -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named query parameter value pattern with `{credentials}`. diff --git a/src/reference/config/bindings/.partials/options-kafka-sasl.md b/src/reference/config/bindings/.partials/options-kafka-sasl.md index e80408fd..fec71f9d 100644 --- a/src/reference/config/bindings/.partials/options-kafka-sasl.md +++ b/src/reference/config/bindings/.partials/options-kafka-sasl.md @@ -1,13 +1,13 @@ #### sasl.mechanism -> `enum` [ "plain", "scram-sha-1", "scram-sha-256", "scram-sha-512" ] +> `enum` [ `plain`, `scram-sha-1`, `scram-sha-256`, `scram-sha-512` ] Supports `plain` and `scram` mechanisms. #### sasl.mechanism: plain -> `string` +> `const` Configure credentials for the `plain` sasl mechanism. @@ -25,7 +25,7 @@ SASL password. #### sasl.mechanism: scram-sha-1 -> `string` +> `const` Configure credentials for the `scram-sha-1` sasl mechanism. @@ -43,7 +43,7 @@ SASL password. #### sasl.mechanism: scram-sha-256 -> `string` +> `const` Configure credentials for the `scram-sha-256` sasl mechanism. @@ -61,7 +61,7 @@ SASL password. #### sasl.mechanism: scram-sha-512 -> `string` +> `const` Configure credentials for the `scram-sha-512` sasl mechanism. diff --git a/src/reference/config/bindings/.partials/options-kafka-topics.md b/src/reference/config/bindings/.partials/options-kafka-topics.md index 56e0cf4f..d7cf9cda 100644 --- a/src/reference/config/bindings/.partials/options-kafka-topics.md +++ b/src/reference/config/bindings/.partials/options-kafka-topics.md @@ -12,9 +12,9 @@ Enforce validation for key #### key.model\* -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] -A schema or type to validate the topic's key. +A schema or type to validate the topic's key. Refer to the individual [model](../../models) docs for type specific implementation. #### topics[].value @@ -24,6 +24,10 @@ Enforce validation for value #### value.model\* -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] -A schema or type to validate the topic's value. +A schema or type to validate the topic's value. Refer to the individual [model](../../models) docs for type specific implementation. + +#### topics[].transforms + +> `array` diff --git a/src/reference/config/bindings/.partials/options-tcp.md b/src/reference/config/bindings/.partials/options-tcp.md index 60ddf638..1cac7bb5 100644 --- a/src/reference/config/bindings/.partials/options-tcp.md +++ b/src/reference/config/bindings/.partials/options-tcp.md @@ -6,6 +6,6 @@ Hostname or IP address. #### tcp.port -> `integer` | `string` | `array` of `integer` | `array` of `string` +> `integer`, `string`, `array` Port number(s), including port number ranges. diff --git a/src/reference/config/bindings/.partials/options-tls.md b/src/reference/config/bindings/.partials/options-tls.md index 3db31ee1..b29812d2 100644 --- a/src/reference/config/bindings/.partials/options-tls.md +++ b/src/reference/config/bindings/.partials/options-tls.md @@ -24,9 +24,9 @@ A list of reference names for the Vault signer certificate. #### tls.trustcacerts -> `boolean` | Default: `true` when trust is `null` +> `boolean` -Trust CA certificates. +Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. #### tls.sni @@ -42,6 +42,6 @@ Application protocols. #### tls.mutual -> `enum` [ "required", "requested", "none" ] | Default: `"none"` +> `enum` [ `required`, `requested`, `none` ] | Default: `none` Mutual authentication. diff --git a/src/reference/config/bindings/.partials/telemetry-grpc.md b/src/reference/config/bindings/.partials/telemetry-grpc.md index b593a572..5e493d9c 100644 --- a/src/reference/config/bindings/.partials/telemetry-grpc.md +++ b/src/reference/config/bindings/.partials/telemetry-grpc.md @@ -6,7 +6,7 @@ Defines the desired telemetry for the binding. #### telemetry.metrics -> `enum` [ "stream", "grpc" ] +> `array` Telemetry metrics to track diff --git a/src/reference/config/bindings/.partials/telemetry-http.md b/src/reference/config/bindings/.partials/telemetry-http.md index 83497d03..0b346d16 100644 --- a/src/reference/config/bindings/.partials/telemetry-http.md +++ b/src/reference/config/bindings/.partials/telemetry-http.md @@ -6,7 +6,7 @@ Defines the desired telemetry for the binding. #### telemetry.metrics -> `enum` [ "stream", "http" ] +> `array` Telemetry metrics to track diff --git a/src/reference/config/bindings/.partials/telemetry.md b/src/reference/config/bindings/.partials/telemetry.md index be3daac4..1a73677d 100644 --- a/src/reference/config/bindings/.partials/telemetry.md +++ b/src/reference/config/bindings/.partials/telemetry.md @@ -6,7 +6,7 @@ Defines the desired telemetry for the binding. #### telemetry.metrics -> `enum` [ "stream" ] +> `array` Telemetry metrics to track diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md index fa47ec68..1ea08587 100644 --- a/src/reference/config/bindings/amqp/.partials/routes.md +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -14,7 +14,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -47,7 +47,7 @@ Link address. #### when[].capabilities -> `enum` [ "send_only", "receive_only", "send_and_receive" ] | Default: `"send_and_receive"` +> `enum` [ `send_only`, `receive_only`, `send_and_receive` ] | Default: `send_and_receive` Send or receive, or both. diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index af50cead..20302064 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -1,12 +1,12 @@ #### options.specs -> `object` as map of named properties +> `object` as map of named:`object` specs specific options #### specs.catalog -> `object` as map of named properties +> `object` as map of named:`object` To map defined catalog for schema retrieval based on catalog specific parameters. @@ -18,7 +18,7 @@ Subject name used when storing the catalog artifact. #### catalog.version -> `string` | Default: `"latest"` +> `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. @@ -28,13 +28,13 @@ Specific iteration or version of a registered schema in the defined catalog. #### servers[].url -> `string` +> `string` | Pattern: `^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$` The server to match based on the server's `url` in an asyncapi `2.x` spec only. #### servers[].host -> `string` +> `string` | Pattern: `^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$` The server to match based on the server's `host` in an asyncapi `3.x` spec only. @@ -58,7 +58,7 @@ Hostname or IP address. #### tcp.port -> `integer` | `string` | `array` of `integer` | `array` of `string` +> `integer`, `string`, `array` Port number(s), including port number ranges. @@ -70,7 +70,7 @@ http specific options. #### http.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -90,19 +90,19 @@ Defines how to extract credentials from the HTTP request. #### credentials.cookies -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named cookie value pattern with `{credentials}`. #### credentials.headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. #### credentials.query -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named query parameter value pattern with `{credentials}`. @@ -138,9 +138,9 @@ A list of reference names for the Vault signer certificate. #### tls.trustcacerts -> `boolean` | Default: `true` when trust is `null` +> `boolean` -Trust CA certificates. +Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. #### tls.sni @@ -156,6 +156,6 @@ Application protocols. #### tls.mutual -> `enum` [ "required", "requested", "none" ] | Default: `"none"` +> `enum` [ `required`, `requested`, `none` ] | Default: `none` Mutual authentication. diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md index 42e38837..1b3ca397 100644 --- a/src/reference/config/bindings/asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -24,7 +24,7 @@ Conditional `asyncapi`-specific routes for adapting streams. #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 065c13c5..8db7bd7b 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -49,7 +49,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ "live", "historical" ] | Default: `"historical"` +> `enum` [ `live`, `historical` ] | Default: `historical` Fetch offset to use for new consumers @@ -113,9 +113,13 @@ messages: mqttMessages ### options.http +> `object` + +http specific options. + #### http.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -131,9 +135,11 @@ authorization: ### options.mqtt +> `object` + #### mqtt.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index 0c74931d..d979d6a6 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -49,7 +49,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ "live", "historical" ] | Default: `"historical"` +> `enum` [ `live`, `historical` ] | Default: `historical` Fetch offset to use for new consumers @@ -113,9 +113,13 @@ messages: mqttMessages ### options.http +> `object` + +http specific options. + #### http.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -131,9 +135,11 @@ authorization: ### options.mqtt +> `object` + #### mqtt.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 4051bdaf..593fc0ed 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -49,7 +49,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ "live", "historical" ] | Default: `"historical"` +> `enum` [ `live`, `historical` ] | Default: `historical` Fetch offset to use for new consumers @@ -113,9 +113,13 @@ messages: mqttMessages ### options.http +> `object` + +http specific options. + #### http.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -131,9 +135,11 @@ authorization: ### options.mqtt +> `object` + #### mqtt.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/filesystem/.partials/options.md b/src/reference/config/bindings/filesystem/.partials/options.md index 94f15b59..5657249f 100644 --- a/src/reference/config/bindings/filesystem/.partials/options.md +++ b/src/reference/config/bindings/filesystem/.partials/options.md @@ -18,6 +18,6 @@ File system URI or directory name with trailing slash. #### options.symlinks -> `enum` [ "follow", "ignore" ] | Default: `"ignore"` +> `enum` [ `follow`, `ignore` ] | Default: `ignore` How to treat symbolic links. diff --git a/src/reference/config/bindings/grpc-kafka/.partials/options.md b/src/reference/config/bindings/grpc-kafka/.partials/options.md index b53212c2..642e3502 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/options.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/options.md @@ -27,7 +27,7 @@ Metadata header used to specify the idempotency key when adapting `grpc` request #### idempotency.metadata -> `string` | Default: `"idempotency-key"` +> `string` | Default: `idempotency-key` The `grpc` metadata header name for idempotency key. @@ -39,13 +39,13 @@ Properties used when handling stream recovery. #### reliability.field -> `integer` | Default: `32767` +> `integer` | Default: `32767` Minimum: `1` Maximum: `536870911` The `grpc` unknown field number to send the `message-id`. #### reliability.metadata -> `string` | Default: `"last-message-id"` +> `string` | Default: `last-message-id` The `grpc` metadata header name for the last `message-id` seen when resuming a stream. @@ -57,30 +57,30 @@ Kafka request message headers injected when adapting `grpc` request-response str #### correlation.headers\* -> `map` of `name: value` properties +> `object` Kafka request message reply to and correlation id header names injected when adapting `grpc` request-response streams to `kafka` topic streams. #### headers.service -> `string` | Default: `"zilla:service"` +> `string` | Default: `zilla:service` Kafka header name for `grpc` service. #### headers.method -> `string` | Default: `"zilla:method"` +> `string` | Default: `zilla:method` Kafka header name for `grpc` method. #### headers.correlation-id -> `string` | Default: `"zilla:correlation-id"` +> `string` | Default: `zilla:correlation-id` Kafka header name for request-response correlation identifier. #### headers.reply-to -> `string` | Default: `"zilla:reply-to"` +> `string` | Default: `zilla:reply-to` Kafka header name for reply-to topic. diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index 12180f09..219debee 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -46,7 +46,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` Roles required by named guard. @@ -76,13 +76,13 @@ routes: #### when[].method -> `string` +> `string` | Pattern: `^(?[^/]+)/(?[^/]+)` Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. #### when[].metadata -> `map` of `name: value` properties +> `object` as map of named: `string` or `object` properties Metadata header name value pairs (all match). @@ -107,18 +107,18 @@ routes: exit: kafka_cache_client ``` -#### routes[].with +#### routes[].with\* -> **oneOf**: [fetch](#with-capability-fetch) | [produce](#with-capability-produce) +> `object` -Defines the route with the `fetch` capability. +Defines the route with the [fetch](#with-capability-fetch) capability. ```yaml with: capability: fetch ``` -Defines the route with the `produce` capability. +Defines the route with the [produce](#with-capability-produce) capability. ```yaml with: @@ -127,7 +127,7 @@ with: #### with.capability: fetch\* -> `object` +> `const` Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic fetch streams. @@ -167,13 +167,13 @@ The filter criteria for the Kafka message key. #### filters[].headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties The filter criteria for the Kafka message headers. #### with.capability: produce\* -> `object` +> `const` Kafka parameters for matched route when adapting `grpc` request-response streams to `kafka` topic produce streams. @@ -200,7 +200,7 @@ The name of a Kafka topic for requests. #### with.acks -> `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` +> `enum` [ `none`, `leader_only`, `in_sync_replicas` ] | Default: `in_sync_replicas` Kafka acknowledgment mode @@ -212,7 +212,7 @@ The Kafka message key to include with each message. #### with.overrides -> `map` of `name: value` properties +> `object` as map of named: `string` properties The Kafka message headers to inject with each message. diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index 1d32e025..855e4f5c 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -21,7 +21,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` Roles required by named guard. @@ -57,7 +57,7 @@ gRPC service method name, such as `example.EchoService/EchoUnary`, or service me #### when[].metadata -> `map` of `name: value` properties +> `object` as map of named: `string` or `object` properties Metadata header name value pairs (all match). diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 6d189ba2..4eed2ad7 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -19,7 +19,7 @@ The grpc server binding adapts `http` request-response streams to `grpc` request ### catalog -> `object` as map of named properties +> `object` as map of named:`object` To map defined catalog for schema retrieval based on catalog specific parameters. @@ -31,7 +31,7 @@ Subject name used when storing the catalog artifact. #### catalog.version -> `string` | Default: `"latest"` +> `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md index f47940a1..78cdcc79 100644 --- a/src/reference/config/bindings/http-filesystem/.partials/routes.md +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -15,7 +15,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/http-kafka/.partials/options.md b/src/reference/config/bindings/http-kafka/.partials/options.md index 16477cb0..b0099a49 100644 --- a/src/reference/config/bindings/http-kafka/.partials/options.md +++ b/src/reference/config/bindings/http-kafka/.partials/options.md @@ -22,7 +22,7 @@ HTTP request header used to specify the idempotency key when adapting `http` req #### idempotency.header\* -> `string` | Default: `"idempotency-key"` +> `string` | Default: `idempotency-key` HTTP request header name for idempotency key. @@ -34,18 +34,18 @@ Kafka request message headers injected when adapting `http` request-response str #### correlation.headers\* -> `map` of `name: value` properties +> `object` Kafka request message reply to and correlation id header names injected when adapting `http` request-response streams to `kafka` topic streams. #### headers.reply-to -> `string` | Default: `"zilla:reply-to"` +> `string` | Default: `zilla:reply-to` Kafka header name for reply-to topic. #### headers.correlation-id -> `string` | Default: `"zilla:correlation-id"` +> `string` | Default: `zilla:correlation-id` Kafka header name for request-response correlation identifier. diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index 434cf32a..52d70c10 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -66,7 +66,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` Roles required by named guard. @@ -99,7 +99,7 @@ HTTP Method, such as `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `CONNECT`, `OPTIONS #### when[].path -> `string` +> `string` | Pattern: `^/` Path with optional embedded parameter names, such as `/{topic}`. @@ -116,18 +116,18 @@ routes: exit: kafka_cache_client ``` -#### routes[].with +#### routes[].with\* -> **oneOf**: [Fetch](#with-capability-fetch) | [Produce](#with-capability-produce) +> `object` -Defines the route with the Fetch capability. +Defines the route with the [Fetch](#with-capability-fetch) capability. ```yaml with: capability: fetch ``` -Defines the route with the Produce capability. +Defines the route with the [Produce](#with-capability-produce) capability. ```yaml with: @@ -136,7 +136,7 @@ with: #### with.capability: fetch\* -> `object` +> `const` Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic fetch streams. @@ -155,7 +155,7 @@ with: merge: content-type: application/json patch: - initial: "[]" + initial: [] path: /- ``` @@ -179,7 +179,7 @@ Message key, optionally referencing path parameter such as `${params.key}`. #### filters[].headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties Message headers, with value optionally referencing path parameter such as `${params.headerX}`. @@ -219,7 +219,7 @@ JSON Patch path to include each Kafka message in unified HTTP response. #### with.capability: produce\* -> `object` +> `const` Kafka parameters for matched route when adapting `http` request-response streams to `kafka` topic produce streams. @@ -252,7 +252,7 @@ Kafka topic name, optionally referencing path parameter such as `${params.topic} #### with.acks -> `enum` [ "none", "leader_only", "in_sync_replicas" ] | Default: `"in_sync_replicas"` +> `enum` [ `none`, `leader_only`, `in_sync_replicas` ] | Default: `in_sync_replicas` Kafka acknowledgement mode @@ -264,7 +264,7 @@ Kafka message key, optionally referencing path parameter such as `${params.id}`. #### with.overrides -> `map` of `name: value` properties +> `object` as map of named: `string` properties Kafka message headers, with values optionally referencing path parameter. @@ -276,7 +276,7 @@ Kafka reply-to topic name. #### with.async -> `map` of `name: value` properties +> `object` as map of named: `string` properties Allows an HTTP response to be retrieved asynchronously. diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 741d17ce..6f6bb9b1 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -11,45 +11,49 @@ Enforce validation for the request content. #### content.model\* -> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the request content. +A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. #### requests[].content-type -> `string` +> `array` of `string` #### requests[].headers -> `string` +> `object` as map of named:`object` #### requests[].method -> `enum` [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ] +> `enum` [ `GET`, `PUT`, `POST`, `DELETE`, `OPTIONS`, `HEAD`, `PATCH`, `TRACE` ] #### requests[].params -> `string` +> `object` #### params.path -> `object` of a named [`model`](../../../models/) +> `object` as map of named:`object` Enforce validation for path #### path.model\* -> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] + +A schema or type to validate the path content. Refer to the individual [model](../../models) docs for type specific implementation. #### params.query -> `object` of a named [`model`](../../../models/) +> `object` as map of named:`object` Enforce validation for query #### query.model\* -> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] + +A schema or type to validate the query content. Refer to the individual [model](../../models) docs for type specific implementation. #### requests[].path @@ -61,7 +65,15 @@ Enforce validation for query #### responses[].content -> `string` +> `object` + +Enforce validation for the response content. + +#### content.model\* + +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] + +A schema or type to validate the response content. Refer to the individual [model](../../models) docs for type specific implementation. #### responses[].content-type @@ -69,7 +81,7 @@ Enforce validation for query #### responses[].headers -> `map` of "name: [model](../../../models/)" properties +> `object` as map of named:`object` Enforce validation for response headers. @@ -82,18 +94,22 @@ headers: #### headers.model\* -> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] + +A schema or type to validate the headers content. Refer to the individual [model](../../models) docs for type specific implementation. #### responses[].status -> `string` +> `integer`, `array` of `integer` #### options.versions +> `array` of `enum` [ `http/1.1`, `h2` ] | Default: `http/1.1,h2` + Supported protocol versions. #### options.overrides -> `map` of `name: value` properties +> `object` as map of named: `string` properties Request header overrides. diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index 92fba136..b5de48f8 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -15,7 +15,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -43,7 +43,7 @@ routes: #### when[].headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties Header name value pairs (all match). diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 6c4db7c5..4788ec2c 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -41,19 +41,19 @@ options: #### options.access-control -> **oneOf**: [same-origin](#access-control-policy-same-origin) | [cross-origin](#access-control-policy-cross-origin) +> `object` -Access control policy for the `HTTP` protocol. +Defines the [same-origin](#access-control-policy-same-origin) or [cross-origin](#access-control-policy-cross-origin) access control policy for the `HTTP` protocol. #### access-control.policy -> `enum` [ "same-origin" , "cross-origin" ] +> `enum` [ `same-origin`, `cross-origin` ] Supported access control policies. #### access-control.policy: same-origin -> `string` +> `const` Extra properties aren't needed when using Same Origin access control for the `HTTP` protocol. @@ -65,7 +65,7 @@ options: #### access-control.policy: cross-origin -> `object` +> `const` Additional properties that cover Cross Origin Resource Sharing (CORS) access control for the `HTTP` protocol. @@ -77,10 +77,13 @@ options: #### access-control.allow -> `object` | Default: all origins, methods and headers, without credentials +> `object` + +Sets the CORS allowed request origins, methods, headers and credentials for the `HTTP` protocol. -Allowed cross-origin request origins, methods, headers and credentials. -CORS allowed request origins, methods, headers and credentials for the `HTTP` protocol. +::: important +Omission of the allow object means Zilla will allow all origins, methods and headers, without credentials. +::: #### allow.origins @@ -108,16 +111,20 @@ Support `fetch` credentials mode `include`. #### access-control.max-age -> `integer` +> `number` Maximum cache age (in seconds) for allowed headers and methods. #### access-control.expose -> `object` | Default: all response headers +> `object` Exposed cross-origin response headers. +::: important +Omission means all response headers. +::: + #### expose.headers > `array` of `string` @@ -126,7 +133,7 @@ Exposed response headers. #### options.authorization -> `object` as map of named objects +> `object` as map of named:`object` Authorization by a named guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/kafka-grpc/.partials/options.md b/src/reference/config/bindings/kafka-grpc/.partials/options.md index 5263b610..d1c1b996 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/options.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/options.md @@ -20,7 +20,7 @@ options: #### options.acks -> `enum` [ "none", "leader_only", "in_sync_replicas" ] +> `enum` [ `none`, `leader_only`, `in_sync_replicas` ] | Default: `in_sync_replicas` The `kafka` acknowledgment mode. @@ -32,7 +32,7 @@ Metadata header used to specify the idempotency key when adapting `kafka` topic #### idempotency.metadata -> `string` | Default: `"idempotency-key"`. +> `string` | Default: `idempotency-key` The `grpc` metadata header name for idempotency key. @@ -50,24 +50,24 @@ Kafka request message correlation header names used when adapting `kafka` topic #### headers.service -> `string` | Default: `"zilla:service"` +> `string` | Default: `zilla:service` Kafka header name for `grpc` service. #### headers.method -> `string` | Default: `"zilla:method"` +> `string` | Default: `zilla:method` Kafka header name for `grpc` method. #### headers.correlation-id -> `string` | Default: `"zilla:correlation-id"` +> `string` | Default: `zilla:correlation-id` Kafka header name for request-response correlation identifier. #### headers.reply-to -> `string` | Default: `"zilla:reply-to"` +> `string` | Default: `zilla:reply-to` Kafka header name for reply-to topic. diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index 0bd2c541..b0a540cf 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -21,7 +21,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` Roles required by named guard. @@ -61,7 +61,7 @@ The name of a Kafka topic for requests. #### when[].headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties Header name value pairs (all match). @@ -73,7 +73,7 @@ The name of the Kafka topic for correlated responses. #### when[].method -> `string` +> `string` | Pattern: `^(?[^/]+)/(?[^/]+)` Pattern matching the fully qualified name of a `grpc` service method, in the format `/` allowing wildcard `*` for the method to indicate any method. @@ -90,7 +90,7 @@ routes: exit: kafka_cache_client ``` -#### routes[].with +#### routes[].with\* > `object` diff --git a/src/reference/config/bindings/kafka-grpc/remote_server.md b/src/reference/config/bindings/kafka-grpc/remote_server.md index dca4754f..9221440f 100644 --- a/src/reference/config/bindings/kafka-grpc/remote_server.md +++ b/src/reference/config/bindings/kafka-grpc/remote_server.md @@ -12,6 +12,19 @@ The kafka-grpc remote_server binding ## Configuration (\* required) +### entry\* + +> `string` | Pattern: `^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$` + +The name of the binding that will be the entrypoint for Kafka streams. + +```yaml + kafka_grpc_proxy: + type: kafka-grpc + kind: remote_server + entry: kafka_cache_client +``` + diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index 6c6ef4fd..d7a92119 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `kafka`-specific routes. #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index 36a37b73..1cef9d71 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -44,7 +44,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ "live", "historical" ] | Default: `"historical"` +> `enum` [ `live`, `historical` ] | Default: `historical` Fetch offset to use for new consumers diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/options.md b/src/reference/config/bindings/mqtt-kafka/.partials/options.md index 117f3e88..98de2122 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/options.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/options.md @@ -75,7 +75,7 @@ MQTT `publish`-specific options. #### publish.qosMax\* -> `enum` [ "at_most_once", "at_least_once", "exactly_once" ] | default: "exactly_once" +> `enum` [ `at_most_once`, `at_least_once`, `exactly_once` ] | Default: `exactly_once` Highest allowed QOS level. diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md index 367e0973..08506c7c 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -18,7 +18,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -87,7 +87,7 @@ MQTT topic filter pattern. Next binding when following this route. -#### routes[].with +#### routes[].with\* > `object` diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index 39a650a1..033caaa3 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `mqtt`-specific routes. #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index fc60bc2e..7d5077a0 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -34,7 +34,7 @@ options: #### options.authorization -> `object` as map of named objects +> `object` as map of named:`object` Authorization by a named guard. diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 23b90432..7aae37c8 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -34,7 +34,7 @@ options: #### options.authorization -> `object` as map of named objects +> `object` as map of named:`object` Authorization by a named guard. @@ -50,7 +50,7 @@ authorization: #### options.versions -> `array` of `enum` [ "v5", "v3.1.1" ] +> `array` of `enum` [ `v3.1.1`, `v5` ] Supported protocol versions. @@ -68,19 +68,19 @@ Topic name. #### topics[].content -> `object` of a named [`model`](../../models/) +> `object` Enforce validation for content #### content.model\* -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] -A schema or type to validate the request content. +A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. #### topics[].user-properties -> `map` of "name: [model](../../models/)" properties +> `object` as map of named:`object` Enforce validation for user provided properties. @@ -93,7 +93,9 @@ user-properties: #### user-properties.model\* -> `model` [ [`avro`](../../models/avro.md), [`json`](../../models/avro.md), [`protobuf`](../../models/protobuf.md), [`string`](../../models/string.md), [`double`](../../models/double.md), [`float`](../../models/float.md), [`int32`](../../models/int32.md), [`int64`](../../models/int64.md) ] +> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] + +A schema or type to validate the user-properties content. Refer to the individual [model](../../models) docs for type specific implementation. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index 39624bbe..55762e26 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -30,11 +30,11 @@ OpenAPI and AsyncAPI specs definition. #### specs.openapi\* -> `object` of `name: value` properties +> `object` as map of named:`object` #### openapi.catalog -> `object` as map of named properties +> `object` as map of named:`object` catalog specific options. @@ -46,17 +46,17 @@ Subject name used when storing the catalog artifact. #### catalog.version -> `string` +> `string` | Default: `latest` Catalog artifact version to use. #### specs.asyncapi\* -> `object` of `name: value` properties +> `object` as map of named:`object` #### asyncapi.catalog -> `object` as map of named properties +> `object` as map of named:`object` `catalog` catalog specific options. @@ -68,6 +68,6 @@ Subject name used when storing the catalog artifact. #### catalog.version -> `string` +> `string` | Default: `latest` Catalog artifact version to use. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md index 0670376e..c207f308 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -49,7 +49,7 @@ routes: exit: asyncapi_client ``` -#### routes[].with +#### routes[].with\* > `object` diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index aa09cb7c..854bb170 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -18,13 +18,13 @@ options: #### options.specs -> `object` as map of named properties +> `object` as map of named:`object` `specs` specific options #### specs.catalog -> `object` as map of named properties +> `object` as map of named:`object` catalog specific options. @@ -36,7 +36,7 @@ Subject name used when storing the catalog artifact. #### catalog.version -> `string` +> `string` | Default: `latest` Catalog artifact version to use. @@ -46,7 +46,7 @@ Catalog artifact version to use. #### servers[].url -> `string` +> `string` | Pattern: `^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$` The server url to match in openapi spec @@ -54,11 +54,11 @@ The server url to match in openapi spec > `object` -`http` specific options. +http specific options. #### http.authorization -> `object` as map of named properties +> `object` as map of named:`object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -78,19 +78,19 @@ Defines how to extract credentials from the HTTP request. #### credentials.cookies -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named cookie value pattern with `{credentials}`. #### credentials.headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. #### credentials.query -> `map` of `name: value` properties +> `object` as map of named: `string` properties Named query parameter value pattern with `{credentials}`. @@ -108,7 +108,7 @@ Hostname or IP address. #### tcp.port -> `integer` | `string` | `array` of `integer` | `array` of `string` +> `integer`, `string`, `array` Port number(s), including port number ranges. @@ -144,9 +144,9 @@ A list of reference names for the Vault signer certificate. #### tls.trustcacerts -> `boolean` | Default: `true` when trust is `null` +> `boolean` -Trust CA certificates. +Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. #### tls.sni @@ -162,6 +162,6 @@ Application protocols. #### tls.mutual -> `enum` [ "required", "requested", "none" ] | Default: `"none"` +> `enum` [ `required`, `requested`, `none` ] | Default: `none` Mutual authentication. diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index 554de621..e0516ed4 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -16,7 +16,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -36,13 +36,13 @@ Read more: [When a route matches](../../../../../concepts/bindings.md#when-a-rou #### when[].transport -> `enum` [ "stream", "datagram" ] +> `enum` [ `stream`, `datagram` ] Transport type. #### when[].family -> `enum` [ "inet", "inet4", "inet6", "unix" ] +> `enum` [ `inet`, `inet4`, `inet6`, `unix` ] Address family. @@ -104,7 +104,7 @@ Port number. #### info.secure -> `string` +> `object` #### secure.cipher diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md index 42a26066..2c298b78 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/routes.md +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -17,7 +17,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -88,7 +88,7 @@ Message key, optionally referencing path parameter such as `${params.key}`. #### filters[].headers -> `map` of `name: value` properties +> `object` as map of named: `string` properties Message headers, with value optionally referencing path parameter such as `${params.headerX}`. @@ -100,6 +100,6 @@ Defines the SSE event syntax used when delivering Kafka messages to SSE clients. #### event.id -> `enum` [ `"${etag}"`, `"["${base64(key)}","${etag}"]"` ] | Default: `"${etag}"` +> `enum` [ `${etag}`, `["${base64(key)}","${etag}"]` ] | Default: `${etag}` Format of `id` field in `sse` `event` diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index 50aa89b9..fdaec620 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -35,6 +35,6 @@ Enforce validation for the request content. #### content.model\* -> `model` [ [`avro`](../../../models/avro.md), [`json`](../../../models/avro.md), [`protobuf`](../../../models/protobuf.md), [`string`](../../../models/string.md), [`double`](../../../models/double.md), [`float`](../../../models/float.md), [`int32`](../../../models/int32.md), [`int64`](../../../models/int64.md) ] +> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] -A schema or type to validate the request content. +A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md index f89e22e2..4935c240 100644 --- a/src/reference/config/bindings/sse/.partials/routes.md +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -16,7 +16,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/tcp/.partials/options.md b/src/reference/config/bindings/tcp/.partials/options.md index 2afb95ae..2d7d490c 100644 --- a/src/reference/config/bindings/tcp/.partials/options.md +++ b/src/reference/config/bindings/tcp/.partials/options.md @@ -18,6 +18,6 @@ Hostname or IP address. #### options.port -> `integer` | `string` | `array` of `integer` | `array` of `string` +> `integer`, `string`, `array` Port number(s), including port number ranges. diff --git a/src/reference/config/bindings/tcp/.partials/routes.md b/src/reference/config/bindings/tcp/.partials/routes.md index 4d0a2fe0..f7d19894 100644 --- a/src/reference/config/bindings/tcp/.partials/routes.md +++ b/src/reference/config/bindings/tcp/.partials/routes.md @@ -1,6 +1,6 @@ #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -19,12 +19,12 @@ Associated authority. #### when[].cidr -> `string` +> `string` | Pattern: `^[0-9a-fA-F:.]+/(\\d{1,3})$` CIDR mask. #### when[].port -> `integer` | `string` | `array` of `integer` | `array` of `string` +> `integer`, `string`, `array` Port number(s), including port number ranges. diff --git a/src/reference/config/bindings/tls/.partials/options.md b/src/reference/config/bindings/tls/.partials/options.md index f0e62237..2027bfc5 100644 --- a/src/reference/config/bindings/tls/.partials/options.md +++ b/src/reference/config/bindings/tls/.partials/options.md @@ -40,9 +40,9 @@ A list of reference names for the Vault signer certificate. #### options.trustcacerts -> `boolean` | Default: `true` when trust is `null` +> `boolean` -Trust CA certificates. +Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. #### options.sni @@ -58,6 +58,6 @@ Application protocols. #### options.mutual -> `enum` [ "required", "requested", "none" ] | Default: `"none"` +> `enum` [ `required`, `requested`, `none` ] | Default: `none` Mutual authentication diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index 0a760c34..d8b332c7 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -13,7 +13,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. @@ -51,7 +51,7 @@ Application protocol. #### when[].port -> `integer` | `string` | `array` of `integer` | `array` of `string` +> `integer`, `string`, `array` Port number(s), including port number ranges. diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index c3a6e844..00f844b6 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -13,7 +13,7 @@ routes: #### routes[].guarded -> `object` as named map of `string:string` `array` +> `object` as map of named:`array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/catalogs/.partials/options-schema-registry.md b/src/reference/config/catalogs/.partials/options-schema-registry.md index 391a28ce..dce0b7a1 100644 --- a/src/reference/config/catalogs/.partials/options-schema-registry.md +++ b/src/reference/config/catalogs/.partials/options-schema-registry.md @@ -10,12 +10,12 @@ Schema Registry URL to access schemas via API calls. #### options.context -> `string` | Default: `"default"` +> `string` | Default: `default` Schema context represents an independent scope in the Schema Registry. #### options.max-age -> `integer` | Default: `300` +> `number` | Default: `300` The maximum duration in seconds to keep a cached schema before fetching the schema again. diff --git a/src/reference/config/catalogs/apicurio-registry.md b/src/reference/config/catalogs/apicurio-registry.md index 3536d342..854a5dea 100644 --- a/src/reference/config/catalogs/apicurio-registry.md +++ b/src/reference/config/catalogs/apicurio-registry.md @@ -36,24 +36,24 @@ Apicurio URL to access schemas or AsyncAPI/OpenAPI definitions via API calls. #### options.group-id -> `string` +> `string` | Default: `default` The artifact group ID represents an independent scope in Apicurio. #### options.use-id -> `enum` [ "globalId", "contentId" ] | Default: `"globalId"` +> `enum` [ `globalId`, `contentId` ] | Default: `globalId` Use global or content identifier for resolving schemas in Apicurio. #### options.id-encoding -> `enum` [ "default", "legacy" ] | Default: `"default"` +> `enum` [ `default`, `legacy` ] | Default: `default` Store identifiers as Apicurio default 8-byte long or legacy 4-byte integer. #### options.max-age -> `integer` | Default: `300` +> `number` | Default: `300` The maximum duration in seconds to keep a cached schema before fetching the schema again. diff --git a/src/reference/config/catalogs/aws-glue.md b/src/reference/config/catalogs/aws-glue.md index 50a7c41c..14e7eda5 100644 --- a/src/reference/config/catalogs/aws-glue.md +++ b/src/reference/config/catalogs/aws-glue.md @@ -37,12 +37,12 @@ The AWS Glue Registry name to access schemas. #### options.max-age -> `number` | Default: `"300"` +> `number` | Default: `300` Configures the time to live in `seconds` for the schema information retrieved against the latest version. The default is 300 seconds or 5 minutes. #### options.compression -> `enum` [ "none", "zlib" ] | Default: `"none"` +> `enum` [ `none`, `zlib` ] | Default: `none` Configures the compression level for the message payloads that are serialized by the models configured in this catalog. diff --git a/src/reference/config/catalogs/filesystem.md b/src/reference/config/catalogs/filesystem.md index d4643126..277a7702 100644 --- a/src/reference/config/catalogs/filesystem.md +++ b/src/reference/config/catalogs/filesystem.md @@ -27,7 +27,7 @@ catalogs: #### options.subjects -> `object` as map of named objects +> `object` as map of named:`object` Unique identifier for artifact categorization in the catalog. diff --git a/src/reference/config/catalogs/inline.md b/src/reference/config/catalogs/inline.md index dfee1f97..0a502a4c 100644 --- a/src/reference/config/catalogs/inline.md +++ b/src/reference/config/catalogs/inline.md @@ -41,7 +41,7 @@ catalog: #### options.subjects -> `object` as map of named objects +> `object` as map of named:`object` Unique identifier for schema categorization in the registry. @@ -53,6 +53,6 @@ Definition specifying data structure and format in detail. #### subjects.version -> `string` | Default: `"latest"` +> `string` | Default: `latest` Specific iteration or version of a registered schema. diff --git a/src/reference/config/guards/jwt.md b/src/reference/config/guards/jwt.md index b0679ab5..1028b389 100644 --- a/src/reference/config/guards/jwt.md +++ b/src/reference/config/guards/jwt.md @@ -91,15 +91,19 @@ Audience claim. #### options.challenge -> `integer` +> `number` Challenge period (seconds). #### options.keys -> `array` of `object` +> `string`, `array` of `object` -If not provided, relies on the `issuer` to infer the location of a remote `.well-known/jwks.json` file. +If not provided, the `jwt` vault relies on the issuer to infer the location of a remote `.well-known/jwks.json` file. + +If a `string` is provided, the value is expected to be a URI. + +If an `array` of objects is provided, the value is expected to be a list of object with the supported keys and their values. ::: note Supported keys diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index 71534680..0590abf6 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -1,6 +1,6 @@ ### catalog -> `object` +> `object` as map of named:`array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. @@ -20,13 +20,13 @@ Define specific schema id to refer from catalog. #### catalog.version -> `string` | Default: `"latest"` +> `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. #### catalog.strategy\* -> `enum` [ "topic" ] +> `enum` [ `topic` ] To determine the subject based on the specified strategy diff --git a/src/reference/config/models/.partials/integer.md b/src/reference/config/models/.partials/integer.md new file mode 100644 index 00000000..d1202c4f --- /dev/null +++ b/src/reference/config/models/.partials/integer.md @@ -0,0 +1,11 @@ +### format + +> `enum` [ `binary`, `text` ] | Default: `text` + +### multiple + +> `integer` + +### range + +> `string` | Pattern: `((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))` diff --git a/src/reference/config/models/.partials/number.md b/src/reference/config/models/.partials/number.md index 7c60adf0..5eba4b16 100644 --- a/src/reference/config/models/.partials/number.md +++ b/src/reference/config/models/.partials/number.md @@ -1,11 +1,11 @@ ### format -> `enum` [ "binary", "text" ] | Default: `"text"` +> `enum` [ `binary`, `text` ] | Default: `text` -### range +### multiple -> `string` | Pattern: "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" +> `number` -### multiple +### range -> `integer` +> `string` | Pattern: `((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))` diff --git a/src/reference/config/models/avro.md b/src/reference/config/models/avro.md index edae95e4..359e3418 100644 --- a/src/reference/config/models/avro.md +++ b/src/reference/config/models/avro.md @@ -26,11 +26,13 @@ catalog: ### model: avro +> `const` + Specifies the model is `avro`. ### view -> `enum` [ "json" ] +> `enum` [ `json` ] Transforms the model from this data type to the Avro schema on produce and to this data type from the Avro schema on consume. diff --git a/src/reference/config/models/double.md b/src/reference/config/models/double.md index 8f184c20..f9147008 100644 --- a/src/reference/config/models/double.md +++ b/src/reference/config/models/double.md @@ -16,6 +16,8 @@ model: double ### model: double +> `const` + Specifies the model is a `double`. diff --git a/src/reference/config/models/float.md b/src/reference/config/models/float.md index 88fb32b8..b0ee9be8 100644 --- a/src/reference/config/models/float.md +++ b/src/reference/config/models/float.md @@ -16,6 +16,12 @@ model: float ### model: float +> `const` + Specifies the model is a `float`. + +### range + +> `string` | Pattern: `((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))` diff --git a/src/reference/config/models/int32.md b/src/reference/config/models/int32.md index ab26450b..71da490c 100644 --- a/src/reference/config/models/int32.md +++ b/src/reference/config/models/int32.md @@ -17,6 +17,8 @@ model: int32 ### model: int32 +> `const` + Specifies the model is a `int32`. - + diff --git a/src/reference/config/models/int64.md b/src/reference/config/models/int64.md index 91460a19..101664e9 100644 --- a/src/reference/config/models/int64.md +++ b/src/reference/config/models/int64.md @@ -16,6 +16,8 @@ model: int64 ### model: int64 +> `const` + Specifies the model is a `int64`. - + diff --git a/src/reference/config/models/json.md b/src/reference/config/models/json.md index b4602315..c11b007f 100644 --- a/src/reference/config/models/json.md +++ b/src/reference/config/models/json.md @@ -25,6 +25,8 @@ catalog: ### model: json +> `const` + Specifies the model is `json`. diff --git a/src/reference/config/models/protobuf.md b/src/reference/config/models/protobuf.md index 37aec51f..911ee805 100644 --- a/src/reference/config/models/protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -28,19 +28,19 @@ catalog: ### model: protobuf -> `string` +> `const` Specifies the model is a `protobuf`. ### view -> `enum` [ "json" ] +> `enum` [ `json` ] Transforms the model from this data type to the Protobuf schema on produce and to this data type from the Protobuf schema on consume. ### catalog -> `object` +> `object` as map of named:`array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. @@ -63,13 +63,13 @@ Define specific schema id to refer from catalog. #### catalog.version -> `string` | Default: `"latest"` +> `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. #### catalog.strategy\* -> `enum` [ "topic" ] +> `enum` [ `topic` ] To determine the subject based on the specified strategy diff --git a/src/reference/config/models/string.md b/src/reference/config/models/string.md index 9d775f62..ad30a956 100644 --- a/src/reference/config/models/string.md +++ b/src/reference/config/models/string.md @@ -14,6 +14,8 @@ Defines a model to enforce validation for string data. ### model: string +> `const` + Specifies the model is a `string`. ```yaml {1} @@ -26,19 +28,19 @@ pattern: ^wait=\d+$ ### encoding -> `enum` [ "utf_8","utf_16" ] +> `enum` [ `utf_8`, `utf_16` ] Define character encoding for unicode. ### minLength -> `integer` | minimum: 1 +> `integer` | Minimum: `1` Define string minimum length. ### maxLength -> `integer` | minimum: 1 +> `integer` | Minimum: `1` Define string maximum length. diff --git a/src/reference/config/overview.md b/src/reference/config/overview.md index 9d3fbed8..0b9d8c3c 100644 --- a/src/reference/config/overview.md +++ b/src/reference/config/overview.md @@ -36,7 +36,7 @@ Namespace name. ### bindings -> `object` as map of named [`binding`](./bindings/) properties +> `object` as map of named:[`binding`](./bindings/) properties Each configured `binding` represents a step in the pipeline as data streams are decoded, translated or encoded according to a specific protocol `type`. @@ -52,7 +52,7 @@ Unconditional `exit` binding acting as a default if none of the conditional rout ### guards -> `object` as map of named [`guard`](./guards/) properties +> `object` as map of named:[`guard`](./guards/) properties Each configured `guard` represents a security checkpoint for one or more bindings based on a specific implementation `type`. @@ -62,7 +62,7 @@ Associated roles can be enforced during routing by only following routes `guarde ### vaults -> `object` as map of named [`vault`](./vaults/) properties +> `object` as map of named:[`vault`](./vaults/) properties Each configured `vault` represents a container for digital keys and certificates based on a specific implementation `type`. @@ -70,7 +70,7 @@ Vaults can be used by specific protocol bindings, such as `tls`, to negotiate sh ### catalogs -> `object` as map of named [`catalog`](./catalogs/) properties +> `object` as map of named:[`catalog`](./catalogs/) properties Each configured `catalog` represent a catalog of schemas of various format based on a specific implementation `type`. @@ -98,7 +98,7 @@ Default attributes to optionally include when exporting metrics. #### exporters -> `object` as map of named [`exporter`](./telemetry/exporters/) properties +> `object` as map of named:[`exporter`](./telemetry/exporters/) properties Map of named exporters. diff --git a/src/reference/config/telemetry/exporters/aws-cloudwatch.md b/src/reference/config/telemetry/exporters/aws-cloudwatch.md index 9610cc3b..4981c233 100644 --- a/src/reference/config/telemetry/exporters/aws-cloudwatch.md +++ b/src/reference/config/telemetry/exporters/aws-cloudwatch.md @@ -62,9 +62,9 @@ To avoid conflicts with Amazon Web Services service namespaces, you should not s #### metrics.interval -> `integer` +> `integer` | Default: `30` -Interval in seconds to push data to the Amazon CloudWatch. Default: 30 seconds. +Interval in seconds to push data to the Amazon CloudWatch. #### options.logs diff --git a/src/reference/config/telemetry/exporters/otlp.md b/src/reference/config/telemetry/exporters/otlp.md index 605b610d..5485e036 100644 --- a/src/reference/config/telemetry/exporters/otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -46,13 +46,13 @@ options: #### options.interval -> `integer` | Default: `30` +> `number` | Default: `30` Interval in seconds to push data to the collector. #### options.signals -> `array` of `enum` [ "logs", "metrics" ] +> `array` of `enum` [ `metrics`, `logs` ] Specifies what signals should be exported. The default behavior is to export all supported signals. @@ -64,7 +64,7 @@ Contains details for the OpenTelemetry Protocol collector endpoint. #### endpoint.protocol -> `enum` [ "http" ] | Default: `"http"` +> `enum` [ `http` ] | Default: `http` Specifies the protocol to use for exporting data for exporting data to the [OTEL Collector](https://opentelemetry.io/docs/collector/). diff --git a/src/reference/config/telemetry/exporters/prometheus.md b/src/reference/config/telemetry/exporters/prometheus.md index a135defd..a60ea015 100644 --- a/src/reference/config/telemetry/exporters/prometheus.md +++ b/src/reference/config/telemetry/exporters/prometheus.md @@ -47,13 +47,13 @@ Contains `prometheus` endpoints. #### endpoints[].scheme\* -> `enum` [ "http" ] +> `enum` [ `http` ] URL scheme to accept for endpoint. #### endpoints[].port\* -> `int` +> `integer` URL port to accept for endpoint. diff --git a/src/reference/config/telemetry/exporters/syslog.md b/src/reference/config/telemetry/exporters/syslog.md index 074b620f..2d345ca8 100644 --- a/src/reference/config/telemetry/exporters/syslog.md +++ b/src/reference/config/telemetry/exporters/syslog.md @@ -100,7 +100,7 @@ The port of the syslog server. #### options.protocol* -> `enum` [ "tcp", "udp", "tls" ] | Default: `"tcp"` +> `enum` [ `tcp`, `udp`, `tls` ] | Default: `tcp` The protocol to use to communicate with the syslog server. Valid values are: `tcp`, `udp`, `tls`. diff --git a/src/reference/config/vaults/filesystem.md b/src/reference/config/vaults/filesystem.md index eb968fda..c7bb1d8a 100644 --- a/src/reference/config/vaults/filesystem.md +++ b/src/reference/config/vaults/filesystem.md @@ -57,10 +57,9 @@ Relative path to keystore. #### keys.type -> `string` +> `string` | Default: `pkcs12` -Keystore type,\ -defaults to `"pkcs12"` +Keystore type. #### keys.password @@ -82,10 +81,9 @@ Relative path to keystore. #### trust.type -> `string` +> `string` | Default: `pkcs12` -Keystore type,\ -defaults to `"pkcs12"` +Keystore type. #### trust.password @@ -107,10 +105,9 @@ Relative path to keystore. #### signers.type -> `string` +> `string` | Default: `pkcs12` -Keystore type.\ -defaults to `"pkcs12"` +Keystore type. #### signers.password From 50ac3b7a635bfb361ef838765a86041b3e36b8ed Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 30 Aug 2024 11:18:44 -0400 Subject: [PATCH 31/54] fix: model types and required --- .check-schema/README.md | 4 +- .check-schema/index.js | 20 +++---- .check-schema/zilla-schema.json | 53 +++++++++++-------- .../.partials/options-kafka-topics.md | 8 +-- .../config/bindings/asyncapi/client.md | 4 ++ .../config/bindings/asyncapi/proxy.md | 4 ++ .../config/bindings/asyncapi/server.md | 4 ++ .../bindings/grpc-kafka/.partials/routes.md | 5 +- .../bindings/http-kafka/.partials/routes.md | 5 +- .../config/bindings/http/.partials/options.md | 14 ++--- .../bindings/kafka-grpc/.partials/routes.md | 2 +- .../config/bindings/kafka/cache_server.md | 4 ++ .../bindings/mqtt-kafka/.partials/options.md | 2 +- src/reference/config/bindings/mqtt/server.md | 8 +-- .../openapi-asyncapi/.partials/options.md | 3 +- .../config/bindings/sse/.partials/options.md | 4 +- src/reference/config/guards/jwt.md | 2 +- .../config/models/.partials/cataloged.md | 2 +- src/reference/config/models/protobuf.md | 2 +- .../config/telemetry/exporters/otlp.md | 2 +- src/reference/config/zilla-cli.md | 3 +- 21 files changed, 92 insertions(+), 63 deletions(-) diff --git a/.check-schema/README.md b/.check-schema/README.md index d1c60e3a..0c70a1be 100644 --- a/.check-schema/README.md +++ b/.check-schema/README.md @@ -7,8 +7,8 @@ This project compares the JSON Schema from the Zilla to the [Reference](../src/r In the repository root directory run: ```bash -docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema.plain > ./.check-schema/zilla-schema.json -docker run -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema > ./src/.vuepress/public/assets/zilla-schema.json +docker run -it --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema.plain > ./.check-schema/zilla-schema.json +docker run -it --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema > ./src/.vuepress/public/assets/zilla-schema.json ``` Once the docker container has printed "started" it must be deleted for the command to complete. diff --git a/.check-schema/index.js b/.check-schema/index.js index 8355fc01..9dc2752b 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -183,9 +183,9 @@ const main = async () => { ...(then.properties?.options?.properties || {}), } } : {}), - required: [...(props?.required || []), ...(then.required || [])], anyOf: [...(then.anyOf || [])], }, + required: [...(props?.required || []), ...(then.required || [])], })) ).flat(1); @@ -218,10 +218,10 @@ const main = async () => { } } } : {}), - required: [...(then.required || []), ...(required || [])], oneOf, anyOf: [...(then.anyOf || []), ...(anyOf || [])], }, + required: [...(then.required || []), ...(required || [])], }))); } else { sections.push({ @@ -240,8 +240,8 @@ const main = async () => { } } } : {}), - required: [...(then.required || [])], - } + }, + required: [...(then.required || [])], }); } }) @@ -255,9 +255,9 @@ const main = async () => { props: { ...(exporterProps?.properties || {}), ...(then.properties || {}), - required: [...(exporterProps?.required || []), ...(then.required || [])], anyOf: [...(then.anyOf || [])], - } + }, + required: [...(exporterProps?.required || []), ...(then.required || [])], })) ); sections.push( @@ -266,21 +266,21 @@ const main = async () => { name: fi.properties.model.const, props: { ...(then.properties || {}), - required: (then.required || []), anyOf: (then.anyOf || []), - } + }, + required: (then.required || []), })) ); // console.log("sections", JSON.stringify(sections)); - sections.forEach(({ folder, name, props }) => { + sections.forEach(({ folder, name, props, required }) => { delete props.type; delete props.kind; var foldername = `src/reference/config/${folder.replaceAll(".", "/")}`; var filename = `${name}.md`; var filePath = `${foldername}/${filename}`; // console.log(filePath, props); - var schemaAttrs = getObjProps(null, props, []); + var schemaAttrs = getObjProps(null, props, required); if (fs.existsSync(filePath)) { var fullMdContent = fs.readFileSync(filePath, "utf8") diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 2254cf9c..a47f73d0 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -979,10 +979,10 @@ ] }, "key": { - "$ref": "#/$defs/converter/model" + "$ref": "#/$defs/converter" }, "value": { - "$ref": "#/$defs/converter/model" + "$ref": "#/$defs/converter" } } } @@ -1083,7 +1083,6 @@ "additionalProperties": false }, "tls": { - "type": "object", "properties": { "version": { "title": "Version", @@ -2231,7 +2230,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" } } }, @@ -2242,7 +2241,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" } } }, @@ -2250,7 +2249,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" } } } @@ -2258,7 +2257,7 @@ "additionalProperties": false }, "content": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" }, "responses": { "type": "array", @@ -2288,12 +2287,12 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" } } }, "content": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" } }, "anyOf": [ @@ -2794,10 +2793,10 @@ "type": "string" }, "key": { - "$ref": "#/$defs/converter/model" + "$ref": "#/$defs/converter" }, "value": { - "$ref": "#/$defs/converter/model" + "$ref": "#/$defs/converter" } } } @@ -3005,12 +3004,10 @@ "title": "Entry", "type": "string", "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" - }, - "required": [ - "entry" - ] + } }, "required": [ + "entry", "routes" ] } @@ -3143,13 +3140,13 @@ "type": "string" }, "content": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" }, "user-properties": { "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" } } } @@ -3840,7 +3837,7 @@ "type": "string" }, "content": { - "$ref": "#/$defs/validator/model" + "$ref": "#/$defs/validator" } }, "anyOf": [ @@ -4386,6 +4383,14 @@ ] }, "converter": { + "oneOf": [ + { + "$ref": "#/$defs/converter/types" + }, + { + "$ref": "#/$defs/converter/model" + } + ], "types": { "type": "string", "enum": [ @@ -4618,7 +4623,7 @@ "pattern": "((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))" }, "multiple": { - "type": "number" + "type": "integer" } }, "additionalProperties": false @@ -4841,16 +4846,22 @@ } }, "validator": { + "oneOf": [ + { + "$ref": "#/$defs/validator/types" + }, + { + "$ref": "#/$defs/validator/model" + } + ], "types": { "type": "string", "enum": [ - "avro", "double", "float", "int32", "int64", "json", - "protobuf", "string" ] }, diff --git a/src/reference/config/bindings/.partials/options-kafka-topics.md b/src/reference/config/bindings/.partials/options-kafka-topics.md index d7cf9cda..a9c83bd0 100644 --- a/src/reference/config/bindings/.partials/options-kafka-topics.md +++ b/src/reference/config/bindings/.partials/options-kafka-topics.md @@ -6,7 +6,7 @@ Topic name. #### topics[].key -> `object` +> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ], `object` Enforce validation for key @@ -18,7 +18,7 @@ A schema or type to validate the topic's key. Refer to the individual [model](.. #### topics[].value -> `object` +> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ], `object` Enforce validation for value @@ -27,7 +27,3 @@ Enforce validation for value > `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] A schema or type to validate the topic's value. Refer to the individual [model](../../models) docs for type specific implementation. - -#### topics[].transforms - -> `array` diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 8db7bd7b..fe5bb050 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -53,6 +53,10 @@ Topic configuration. Fetch offset to use for new consumers +#### topics[].transforms + +> `array` + #### kafka.sasl > `object` diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index d979d6a6..10c777e3 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -53,6 +53,10 @@ Topic configuration. Fetch offset to use for new consumers +#### topics[].transforms + +> `array` + #### kafka.sasl > `object` diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 593fc0ed..777c49c6 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -53,6 +53,10 @@ Topic configuration. Fetch offset to use for new consumers +#### topics[].transforms + +> `array` + #### kafka.sasl > `object` diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index 219debee..03924f9a 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -1,5 +1,4 @@ - -### routes +### routes\* > `array` of `object` @@ -192,11 +191,13 @@ with: reply-to: responses ``` + #### with.topic\* > `string` The name of a Kafka topic for requests. + #### with.acks diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index 52d70c10..8b64e764 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -1,5 +1,4 @@ - -### routes +### routes\* > `array` of `object` @@ -244,11 +243,13 @@ with: location: /items/${params.id};cid=${correlationId} ``` + #### with.topic\* > `string` Kafka topic name, optionally referencing path parameter such as `${params.topic}`. + #### with.acks diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 6f6bb9b1..e610f5f6 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -5,7 +5,7 @@ #### requests[].content -> `object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for the request content. @@ -21,7 +21,7 @@ A schema or type to validate the request content. Refer to the individual [model #### requests[].headers -> `object` as map of named:`object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` #### requests[].method @@ -33,7 +33,7 @@ A schema or type to validate the request content. Refer to the individual [model #### params.path -> `object` as map of named:`object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for path @@ -45,7 +45,7 @@ A schema or type to validate the path content. Refer to the individual [model](. #### params.query -> `object` as map of named:`object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for query @@ -65,15 +65,17 @@ A schema or type to validate the query content. Refer to the individual [model]( #### responses[].content -> `object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for the response content. + #### content.model\* > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] A schema or type to validate the response content. Refer to the individual [model](../../models) docs for type specific implementation. + #### responses[].content-type @@ -81,7 +83,7 @@ A schema or type to validate the response content. Refer to the individual [mode #### responses[].headers -> `object` as map of named:`object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for response headers. diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index b0a540cf..f8a2808d 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -1,4 +1,4 @@ -### routes +### routes\* > `array` of `object` diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index 1cef9d71..3775fd26 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -48,6 +48,10 @@ Topic configuration. Fetch offset to use for new consumers +#### topics[].transforms + +> `array` + diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/options.md b/src/reference/config/bindings/mqtt-kafka/.partials/options.md index 98de2122..3dd9902a 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/options.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/options.md @@ -1,4 +1,4 @@ -### options +### options\* > `object` diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 7aae37c8..c75842c1 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -68,19 +68,19 @@ Topic name. #### topics[].content -> `object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for content #### content.model\* -> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. #### topics[].user-properties -> `object` as map of named:`object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for user provided properties. @@ -93,7 +93,7 @@ user-properties: #### user-properties.model\* -> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] A schema or type to validate the user-properties content. Refer to the individual [model](../../models) docs for type specific implementation. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index 55762e26..45063d7c 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -1,4 +1,3 @@ - ### options > `object` @@ -60,6 +59,7 @@ Catalog artifact version to use. `catalog` catalog specific options. + #### catalog.subject\* > `string` @@ -71,3 +71,4 @@ Subject name used when storing the catalog artifact. > `string` | Default: `latest` Catalog artifact version to use. + diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index fdaec620..de0a3114 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -29,12 +29,12 @@ The path selector. #### requests[].content -> `object` +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` Enforce validation for the request content. #### content.model\* -> `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] +> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. diff --git a/src/reference/config/guards/jwt.md b/src/reference/config/guards/jwt.md index 1028b389..63b9a9a7 100644 --- a/src/reference/config/guards/jwt.md +++ b/src/reference/config/guards/jwt.md @@ -52,7 +52,7 @@ guards: ## Configuration (\* required) -### options +### options\* > `object` diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index 0590abf6..841b3bdf 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -1,4 +1,4 @@ -### catalog +### catalog\* > `object` as map of named:`array` diff --git a/src/reference/config/models/protobuf.md b/src/reference/config/models/protobuf.md index 911ee805..7f969cec 100644 --- a/src/reference/config/models/protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -38,7 +38,7 @@ Specifies the model is a `protobuf`. Transforms the model from this data type to the Protobuf schema on produce and to this data type from the Protobuf schema on consume. -### catalog +### catalog\* > `object` as map of named:`array` diff --git a/src/reference/config/telemetry/exporters/otlp.md b/src/reference/config/telemetry/exporters/otlp.md index 5485e036..3fd5f43b 100644 --- a/src/reference/config/telemetry/exporters/otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -27,7 +27,7 @@ exporters: ## Configuration (\* required) -### options +### options\* > `object` diff --git a/src/reference/config/zilla-cli.md b/src/reference/config/zilla-cli.md index aea115ab..c1f41745 100644 --- a/src/reference/config/zilla-cli.md +++ b/src/reference/config/zilla-cli.md @@ -3,7 +3,6 @@ category: - CLI description: The command line interface to control the Zilla runtime. --- - # Zilla Runtime CLI @@ -217,6 +216,7 @@ Set individual Zilla properties. zilla start -P zilla.engine.prop=value -P zilla.other.thing=value ``` + #### -v --verbose > `flag` @@ -226,6 +226,7 @@ Log verbose output to `stdout`. ```bash:no-line-numbers zilla start -v ``` + #### -w --workers From c1533d141fae8ba26f1bdb330cc757ced125164e Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 30 Aug 2024 11:30:37 -0400 Subject: [PATCH 32/54] fix: links and tls options ref --- .../bindings/asyncapi/.partials/options.md | 54 ------------------- .../config/bindings/asyncapi/client.md | 8 +++ .../config/bindings/asyncapi/proxy.md | 8 +++ .../config/bindings/asyncapi/server.md | 8 +++ .../config/bindings/http/.partials/options.md | 10 ++-- .../bindings/openapi/.partials/options.md | 54 ------------------- .../config/bindings/openapi/client.md | 8 +++ .../config/bindings/openapi/server.md | 7 +++ .../config/bindings/sse/.partials/options.md | 2 +- .../config/bindings/tls/.partials/options.md | 2 +- 10 files changed, 46 insertions(+), 115 deletions(-) diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index 20302064..2614c968 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -105,57 +105,3 @@ Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"` > `object` as map of named: `string` properties Named query parameter value pattern with `{credentials}`. - -#### options.tls - -> `object` - -`tls` specific options. - -#### tls.version - -> `string` - -Protocol version. - -#### tls.keys - -> `array` of `string` - -A list of reference names for the Vault key. - -#### tls.trust - -> `array` of `string` - -A list of reference names for the Vault certificate. - -#### tls.signers - -> `array` of `string` - -A list of reference names for the Vault signer certificate. - -#### tls.trustcacerts - -> `boolean` - -Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. - -#### tls.sni - -> `array` of `string` - -A list of the Server Name Indications. - -#### tls.alpn - -> `array` of `string` - -Application protocols. - -#### tls.mutual - -> `enum` [ `required`, `requested`, `none` ] | Default: `none` - -Mutual authentication. diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index fe5bb050..5f392059 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -157,5 +157,13 @@ authorization: +#### options.tls + +> `object` + +`tls` specific options. + + + diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index 10c777e3..bbf5feee 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -157,6 +157,14 @@ authorization: +#### options.tls + +> `object` + +`tls` specific options. + + + #### routes[].exit diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 777c49c6..2a05906c 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -157,6 +157,14 @@ authorization: +#### options.tls + +> `object` + +`tls` specific options. + + + #### routes[].exit diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index e610f5f6..8bcbe411 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -13,7 +13,7 @@ Enforce validation for the request content. > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the request content. Refer to the individual [model](../../../models) docs for type specific implementation. #### requests[].content-type @@ -41,7 +41,7 @@ Enforce validation for path > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the path content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the path content. Refer to the individual [model](../../../models) docs for type specific implementation. #### params.query @@ -53,7 +53,7 @@ Enforce validation for query > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the query content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the query content. Refer to the individual [model](../../../models) docs for type specific implementation. #### requests[].path @@ -74,7 +74,7 @@ Enforce validation for the response content. > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the response content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the response content. Refer to the individual [model](../../../models) docs for type specific implementation. #### responses[].content-type @@ -98,7 +98,7 @@ headers: > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the headers content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the headers content. Refer to the individual [model](../../../models) docs for type specific implementation. #### responses[].status diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index 854bb170..b9c59971 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -111,57 +111,3 @@ Hostname or IP address. > `integer`, `string`, `array` Port number(s), including port number ranges. - -#### options.tls - -> `object` - -`tls` specific options. - -#### tls.version - -> `string` - -Protocol version. - -#### tls.keys - -> `array` of `string` - -A list of reference names for the Vault key. - -#### tls.trust - -> `array` of `string` - -A list of reference names for the Vault certificate. - -#### tls.signers - -> `array` of `string` - -A list of reference names for the Vault signer certificate. - -#### tls.trustcacerts - -> `boolean` - -Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. - -#### tls.sni - -> `array` of `string` - -A list of the Server Name Indications. - -#### tls.alpn - -> `array` of `string` - -Application protocols. - -#### tls.mutual - -> `enum` [ `required`, `requested`, `none` ] | Default: `none` - -Mutual authentication. diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md index 6ae17880..4c5f3f37 100644 --- a/src/reference/config/bindings/openapi/client.md +++ b/src/reference/config/bindings/openapi/client.md @@ -13,5 +13,13 @@ The openapi client binding ## Configuration (\* required) + +#### options.tls + +> `object` + +`tls` specific options. + + diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md index 3a87f010..dcf04e23 100644 --- a/src/reference/config/bindings/openapi/server.md +++ b/src/reference/config/bindings/openapi/server.md @@ -14,5 +14,12 @@ The openapi server binding +#### options.tls + +> `object` + +`tls` specific options. + + diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index de0a3114..1d2491a3 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -37,4 +37,4 @@ Enforce validation for the request content. > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the request content. Refer to the individual [model](../../../models) docs for type specific implementation. diff --git a/src/reference/config/bindings/tls/.partials/options.md b/src/reference/config/bindings/tls/.partials/options.md index 2027bfc5..ebffa021 100644 --- a/src/reference/config/bindings/tls/.partials/options.md +++ b/src/reference/config/bindings/tls/.partials/options.md @@ -42,7 +42,7 @@ A list of reference names for the Vault signer certificate. > `boolean` -Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. +Trust CA certificates. This property will be considered set to `true` when [options.trust](#options-trust) is `null`. #### options.sni From e14a5e1b1df74ea53b3ae87f5e15b4ee22c7c7a3 Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 30 Aug 2024 11:38:51 -0400 Subject: [PATCH 33/54] fix: models link --- .../config/bindings/.partials/options-kafka-topics.md | 4 ++-- .../config/bindings/http/.partials/options.md | 10 +++++----- src/reference/config/bindings/mqtt/server.md | 4 ++-- src/reference/config/bindings/sse/.partials/options.md | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/reference/config/bindings/.partials/options-kafka-topics.md b/src/reference/config/bindings/.partials/options-kafka-topics.md index a9c83bd0..9f4146e8 100644 --- a/src/reference/config/bindings/.partials/options-kafka-topics.md +++ b/src/reference/config/bindings/.partials/options-kafka-topics.md @@ -14,7 +14,7 @@ Enforce validation for key > `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] -A schema or type to validate the topic's key. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the topic's key. Refer to the individual [model](../../models/) docs for type specific implementation. #### topics[].value @@ -26,4 +26,4 @@ Enforce validation for value > `enum` [ `avro`, `double`, `float`, `int32`, `int64`, `json`, `protobuf`, `string` ] -A schema or type to validate the topic's value. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the topic's value. Refer to the individual [model](../../models/) docs for type specific implementation. diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 8bcbe411..e77c82ce 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -13,7 +13,7 @@ Enforce validation for the request content. > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the request content. Refer to the individual [model](../../../models) docs for type specific implementation. +A schema or type to validate the request content. Refer to the individual [model](../../../models/) docs for type specific implementation. #### requests[].content-type @@ -41,7 +41,7 @@ Enforce validation for path > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the path content. Refer to the individual [model](../../../models) docs for type specific implementation. +A schema or type to validate the path content. Refer to the individual [model](../../../models/) docs for type specific implementation. #### params.query @@ -53,7 +53,7 @@ Enforce validation for query > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the query content. Refer to the individual [model](../../../models) docs for type specific implementation. +A schema or type to validate the query content. Refer to the individual [model](../../../models/) docs for type specific implementation. #### requests[].path @@ -74,7 +74,7 @@ Enforce validation for the response content. > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the response content. Refer to the individual [model](../../../models) docs for type specific implementation. +A schema or type to validate the response content. Refer to the individual [model](../../../models/) docs for type specific implementation. #### responses[].content-type @@ -98,7 +98,7 @@ headers: > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the headers content. Refer to the individual [model](../../../models) docs for type specific implementation. +A schema or type to validate the headers content. Refer to the individual [model](../../../models/) docs for type specific implementation. #### responses[].status diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index c75842c1..8f8bdc25 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -76,7 +76,7 @@ Enforce validation for content > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the request content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the request content. Refer to the individual [model](../../models/) docs for type specific implementation. #### topics[].user-properties @@ -95,7 +95,7 @@ user-properties: > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the user-properties content. Refer to the individual [model](../../models) docs for type specific implementation. +A schema or type to validate the user-properties content. Refer to the individual [model](../../models/) docs for type specific implementation. diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index 1d2491a3..146ce0b5 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -37,4 +37,4 @@ Enforce validation for the request content. > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ] -A schema or type to validate the request content. Refer to the individual [model](../../../models) docs for type specific implementation. +A schema or type to validate the request content. Refer to the individual [model](../../../models/) docs for type specific implementation. From 434e556908b2382acc39a0f764c2db0e9413796d Mon Sep 17 00:00:00 2001 From: AJ Date: Thu, 5 Sep 2024 19:22:27 -0400 Subject: [PATCH 34/54] fix nested parsing for oneOf and anyOf --- .check-schema/index.js | 76 ++++---- .check-schema/zilla-schema.json | 225 ++++++++++++++---------- .github/workflows/build-deploy-docs.yml | 2 +- 3 files changed, 176 insertions(+), 127 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index 9dc2752b..f42b365b 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -27,6 +27,39 @@ const main = async () => { return type; } + function getOptions(name, parent, childProps){ + var anyOfProps = parent.anyOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); + var oneOfProps = parent.oneOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); + return (childProps?.options != false ? { + ...parent?.properties?.options, + ...childProps?.options, + properties: { + ...(parent?.properties?.options?.properties || {}), + ...(childProps?.options?.properties || {}), + ...(anyOfProps?.[0] || {}), + ...(oneOfProps?.[0] || {}), + } + } : {}); + } + + function getRoutes(name, root, parent, childProps){ + var anyOfProps = parent.anyOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.routes)).map(({properties}) => (properties?.routes?.items?.properties)); + var oneOfProps = parent.oneOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.routes)).map(({properties}) => (properties?.routes?.items?.properties)); + return (parent?.properties?.routes != false ? { + ...parent?.properties?.routes, + items: { + ...parent?.properties?.routes?.items, + properties: { + ...(root?.properties?.routes?.items?.properties || {}), + ...(parent?.properties?.routes?.items?.properties || {}), + ...(childProps?.routes?.items?.properties || {}), + ...(anyOfProps?.[0] || {}), + ...(oneOfProps?.[0] || {}), + } + } + } : {}); + } + function getPageProps(pageTokens) { var foundHeadings = []; // console.log("tokens", tokens); @@ -64,6 +97,7 @@ const main = async () => { function getObjProps(attr, obj, reqKeys) { var props = []; // console.log(attr, Object.keys(obj || {})); + // if (attr === "options") console.log(JSON.stringify(obj)); Object.entries(obj).forEach(([k, i]) => { // console.log(k, JSON.stringify(i)); if (!i || !!i.deprecated) return @@ -87,10 +121,11 @@ const main = async () => { .forEach(({ properties, required }) => props.push(...getObjProps(k, properties, required)) ); - i.allOf?.filter(({ properties }) => !!properties) - .forEach(({ properties, required }) => - props.push(...getObjProps(k, properties, required)) - ); + if (i.allOf || i.oneOf) { + var allOf = i.allOf?.reduce((a, b) => ({...a, ...b}), {}); + var oneOf = i.oneOf?.reduce((a, b) => ({...a, ...b}), {}); + props.push(...getObjProps(k, {...(allOf?.properties || {}), ...(oneOf?.properties || {})}, [...(allOf?.required || []), ...(oneOf?.required || [])])) + } i.items?.anyOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => props.push(...getObjProps(`${k}[]`, properties, required)) @@ -144,8 +179,6 @@ const main = async () => { props.push([`${path}: ${i.const}`, req, "`const`", getExtraProps(i)]); } else if (i.enum?.length) { i.enum.forEach((e) => props.push([`${path}: ${e}`, req, type, getExtraProps(i)])); - // } else if (i.const) { - // props.push([path, req, type, getExtraProps(i)]); } else if (i.oneOf) { props.push([ path, @@ -200,24 +233,8 @@ const main = async () => { ...bindings.properties, ...(then.properties || {}), ...(properties || {}), - options: (then.properties?.options != false ? { - ...then.properties?.options, - properties: { - ...(then.properties?.options?.properties || {}), - ...(properties?.options?.properties || {}), - } - } : {}), - routes: (then.properties?.routes != false ? { - ...then.properties?.routes, - items: { - ...then.properties?.routes?.items, - properties: { - ...(bindings.properties?.routes?.items?.properties || {}), - ...(then.properties?.routes?.items?.properties || {}), - ...(properties?.routes?.items?.properties || {}), - } - } - } : {}), + options: getOptions(properties.kind.const, then, properties), + routes: getRoutes(properties.kind.const, bindings, then, properties), oneOf, anyOf: [...(then.anyOf || []), ...(anyOf || [])], }, @@ -230,16 +247,7 @@ const main = async () => { props: { ...bindings.properties, ...(then.properties || {}), - routes: (then.properties?.routes != false ? { - ...then.properties?.routes, - items: { - ...then.properties?.routes?.items, - properties: { - ...(bindings.properties?.routes?.items?.properties || {}), - ...(then.properties?.routes?.items?.properties || {}), - } - } - } : {}), + routes: getRoutes(then.properties.kind.enum[0], bindings, then) }, required: [...(then.required || [])], }); diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index a47f73d0..768923a6 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -1048,97 +1048,91 @@ } }, "tcp": { - "properties": { - "host": { - "title": "Host", - "type": "string" - }, - "port": { - "title": "Port", - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - }, - { - "type": "array", - "items": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] - } - } - ] - } + "host": { + "title": "Host", + "type": "string" }, - "additionalProperties": false + "port": { + "title": "Port", + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + } + } + ] + } }, "tls": { - "properties": { - "version": { - "title": "Version", + "version": { + "title": "Version", + "type": "string" + }, + "keys": { + "title": "Vault Keys", + "type": "array", + "items": { "type": "string" - }, - "keys": { - "title": "Vault Keys", - "type": "array", - "items": { - "type": "string" - } - }, - "trust": { - "title": "Vault Certificates", - "type": "array", - "items": { - "type": "string" - } - }, - "trustcacerts": { - "title": "Trust CA Certificates", - "type": "boolean" - }, - "sni": { - "title": "Server Names", - "type": "array", - "items": { - "type": "string" - } - }, - "alpn": { - "title": "Application Protocols", - "type": "array", - "items": { - "type": "string" - } - }, - "mutual": { - "title": "Mutual Authentication", - "type": "string", - "enum": [ - "required", - "requested", - "none" - ], - "default": "none" - }, - "signers": { - "title": "Vault Signer Certificates", - "type": "array", - "items": { - "type": "string" - } } }, - "additionalProperties": false + "trust": { + "title": "Vault Certificates", + "type": "array", + "items": { + "type": "string" + } + }, + "trustcacerts": { + "title": "Trust CA Certificates", + "type": "boolean" + }, + "sni": { + "title": "Server Names", + "type": "array", + "items": { + "type": "string" + } + }, + "alpn": { + "title": "Application Protocols", + "type": "array", + "items": { + "type": "string" + } + }, + "mutual": { + "title": "Mutual Authentication", + "type": "string", + "enum": [ + "required", + "requested", + "none" + ], + "default": "none" + }, + "signers": { + "title": "Vault Signer Certificates", + "type": "array", + "items": { + "type": "string" + } + } } }, "catalog": { @@ -1425,10 +1419,20 @@ "additionalProperties": false }, "tcp": { - "$ref": "#/$defs/options/binding/tcp" + "title": "tcp Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tcp" + }, + "additionalProperties": false }, "tls": { - "$ref": "#/$defs/options/binding/tls" + "title": "tls Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false }, "http": { "title": "Http", @@ -3366,10 +3370,20 @@ "options": { "properties": { "tcp": { - "$ref": "#/$defs/options/binding/tcp" + "title": "tcp Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tcp" + }, + "additionalProperties": false }, "tls": { - "$ref": "#/$defs/options/binding/tls" + "title": "tls Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false }, "http": { "title": "Http", @@ -4018,7 +4032,12 @@ }, "vault": false, "options": { - "$ref": "#/$defs/options/binding/tcp" + "title": "Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tcp" + }, + "additionalProperties": false }, "routes": { "title": "Routes", @@ -4227,7 +4246,24 @@ "const": "client" }, "options": { - "$ref": "#/$defs/options/binding/tls" + "title": "Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] } } }, @@ -4237,7 +4273,12 @@ "const": "server" }, "options": { - "$ref": "#/$defs/options/binding/tls", + "title": "Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false, "oneOf": [ { "required": [ diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml index e58f9ef9..049f1de7 100644 --- a/.github/workflows/build-deploy-docs.yml +++ b/.github/workflows/build-deploy-docs.yml @@ -132,7 +132,7 @@ jobs: steps: - name: Download cloudflare-pages artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: cloudflare-pages path: ${{ env.DistDir }} From 24835a89f8644c71ed3873051e5c24027c6c91d8 Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 6 Sep 2024 09:33:08 -0400 Subject: [PATCH 35/54] add anyOf and allOf parsing --- .check-schema/index.js | 48 +- .check-schema/zilla-schema.json | 259 ++-- src/.vuepress/public/assets/zilla-schema.json | 1135 ++++++++++------- .../bindings/.partials/options-http-auth.md | 2 +- .../bindings/.partials/options-mqtt-auth.md | 2 +- .../bindings/asyncapi/.partials/options.md | 2 +- .../config/bindings/grpc/.partials/routes.md | 2 +- .../config/bindings/http/.partials/routes.md | 2 +- src/reference/config/bindings/http/server.md | 6 +- .../config/bindings/kafka/.partials/routes.md | 2 +- .../config/bindings/mqtt/.partials/routes.md | 2 +- .../bindings/openapi/.partials/options.md | 2 +- .../config/bindings/tcp/.partials/options.md | 14 +- .../config/bindings/tls/.partials/routes.md | 2 +- .../config/bindings/ws/.partials/routes.md | 2 +- 15 files changed, 827 insertions(+), 655 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index f42b365b..237f8aea 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -30,14 +30,14 @@ const main = async () => { function getOptions(name, parent, childProps){ var anyOfProps = parent.anyOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); var oneOfProps = parent.oneOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); - return (childProps?.options != false ? { + return (childProps?.options !== false ? { ...parent?.properties?.options, ...childProps?.options, properties: { ...(parent?.properties?.options?.properties || {}), - ...(childProps?.options?.properties || {}), ...(anyOfProps?.[0] || {}), ...(oneOfProps?.[0] || {}), + ...(childProps?.options?.properties || {}), } } : {}); } @@ -45,7 +45,7 @@ const main = async () => { function getRoutes(name, root, parent, childProps){ var anyOfProps = parent.anyOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.routes)).map(({properties}) => (properties?.routes?.items?.properties)); var oneOfProps = parent.oneOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.routes)).map(({properties}) => (properties?.routes?.items?.properties)); - return (parent?.properties?.routes != false ? { + return (parent?.properties?.routes !== false ? { ...parent?.properties?.routes, items: { ...parent?.properties?.routes?.items, @@ -60,6 +60,14 @@ const main = async () => { } : {}); } + function getRequired(name, parent, childRequired){ + return [ + ...(parent?.anyOf?.reduce(({required:r1}, {required:r2}) => ([...(r1 || []), ...(r2 || [])]), []) || []), + ...(parent?.required || []), + ...(childRequired || []) + ]; + } + function getPageProps(pageTokens) { var foundHeadings = []; // console.log("tokens", tokens); @@ -99,9 +107,13 @@ const main = async () => { // console.log(attr, Object.keys(obj || {})); // if (attr === "options") console.log(JSON.stringify(obj)); Object.entries(obj).forEach(([k, i]) => { - // console.log(k, JSON.stringify(i)); if (!i || !!i.deprecated) return + // spread extra props + i = i.anyOf?.reduce((a, b) => ({...a, ...b}), i) || i; + i = i.allOf?.reduce((a, b) => ({...a, ...b}), i) || i; + // console.log(k, JSON.stringify(i)); + //recurse var patternProperties = false; if (i.patternProperties) { @@ -121,11 +133,6 @@ const main = async () => { .forEach(({ properties, required }) => props.push(...getObjProps(k, properties, required)) ); - if (i.allOf || i.oneOf) { - var allOf = i.allOf?.reduce((a, b) => ({...a, ...b}), {}); - var oneOf = i.oneOf?.reduce((a, b) => ({...a, ...b}), {}); - props.push(...getObjProps(k, {...(allOf?.properties || {}), ...(oneOf?.properties || {})}, [...(allOf?.required || []), ...(oneOf?.required || [])])) - } i.items?.anyOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => props.push(...getObjProps(`${k}[]`, properties, required)) @@ -209,14 +216,10 @@ const main = async () => { props: { ...(props?.properties || {}), ...(then.properties || {}), - options: (then.properties?.options != false ? { - ...then.properties?.options, - properties: { - ...(props?.properties?.options?.properties || {}), - ...(then.properties?.options?.properties || {}), - } - } : {}), + options: getOptions(fi.properties.type.const || fi.properties.type.enum?.[0], props, then.properties), + allOf: [...(then.allOf || [])], anyOf: [...(then.anyOf || [])], + oneOf: [...(then.oneOf || [])], }, required: [...(props?.required || []), ...(then.required || [])], })) @@ -226,7 +229,7 @@ const main = async () => { bindings.allOf?.forEach(({ if: fi, then }) => { var folder = `bindings.${fi.properties.type.const}`; if (then.oneOf) { - sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf }) => ({ + sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf, allOf }) => ({ folder, name: properties.kind.const, props: { @@ -235,10 +238,11 @@ const main = async () => { ...(properties || {}), options: getOptions(properties.kind.const, then, properties), routes: getRoutes(properties.kind.const, bindings, then, properties), - oneOf, + allOf: [...(then.allOf || []), ...(allOf || [])], anyOf: [...(then.anyOf || []), ...(anyOf || [])], + oneOf: [...(then.oneOf || []), ...(oneOf || [])], }, - required: [...(then.required || []), ...(required || [])], + required: getRequired(properties.kind.const, then, required), }))); } else { sections.push({ @@ -247,7 +251,11 @@ const main = async () => { props: { ...bindings.properties, ...(then.properties || {}), - routes: getRoutes(then.properties.kind.enum[0], bindings, then) + options: getOptions(then.properties.kind.enum[0], bindings, then.properties), + routes: getRoutes(then.properties.kind.enum[0], bindings, then), + allOf: [...(then.allOf || [])], + anyOf: [...(then.anyOf || [])], + oneOf: [...(then.oneOf || [])], }, required: [...(then.required || [])], }); diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 768923a6..438e7bc5 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -1048,91 +1048,101 @@ } }, "tcp": { - "host": { - "title": "Host", - "type": "string" - }, - "port": { - "title": "Port", - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - }, - { - "type": "array", - "items": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] - } - } - ] - } - }, - "tls": { - "version": { - "title": "Version", - "type": "string" - }, - "keys": { - "title": "Vault Keys", - "type": "array", - "items": { - "type": "string" - } - }, - "trust": { - "title": "Vault Certificates", - "type": "array", - "items": { - "type": "string" - } - }, - "trustcacerts": { - "title": "Trust CA Certificates", - "type": "boolean" - }, - "sni": { - "title": "Server Names", - "type": "array", - "items": { + "title": "tcp Options", + "type": "object", + "properties": { + "host": { + "title": "Host", "type": "string" + }, + "port": { + "title": "Port", + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + } + } + ] } }, - "alpn": { - "title": "Application Protocols", - "type": "array", - "items": { + "additionalProperties": false + }, + "tls": { + "title": "tls Options", + "type": "object", + "properties": { + "version": { + "title": "Version", "type": "string" + }, + "keys": { + "title": "Vault Keys", + "type": "array", + "items": { + "type": "string" + } + }, + "trust": { + "title": "Vault Certificates", + "type": "array", + "items": { + "type": "string" + } + }, + "trustcacerts": { + "title": "Trust CA Certificates", + "type": "boolean" + }, + "sni": { + "title": "Server Names", + "type": "array", + "items": { + "type": "string" + } + }, + "alpn": { + "title": "Application Protocols", + "type": "array", + "items": { + "type": "string" + } + }, + "mutual": { + "title": "Mutual Authentication", + "type": "string", + "enum": [ + "required", + "requested", + "none" + ], + "default": "none" + }, + "signers": { + "title": "Vault Signer Certificates", + "type": "array", + "items": { + "type": "string" + } } }, - "mutual": { - "title": "Mutual Authentication", - "type": "string", - "enum": [ - "required", - "requested", - "none" - ], - "default": "none" - }, - "signers": { - "title": "Vault Signer Certificates", - "type": "array", - "items": { - "type": "string" - } - } + "additionalProperties": false } }, "catalog": { @@ -1419,20 +1429,10 @@ "additionalProperties": false }, "tcp": { - "title": "tcp Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tcp" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tcp" }, "tls": { - "title": "tls Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tls" }, "http": { "title": "Http", @@ -3370,20 +3370,10 @@ "options": { "properties": { "tcp": { - "title": "tcp Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tcp" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tcp" }, "tls": { - "title": "tls Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tls" }, "http": { "title": "Http", @@ -4032,12 +4022,7 @@ }, "vault": false, "options": { - "title": "Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tcp" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tcp" }, "routes": { "title": "Routes", @@ -4246,22 +4231,24 @@ "const": "client" }, "options": { - "title": "Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false, - "oneOf": [ + "allOf": [ { - "required": [ - "keys" - ] + + "$ref": "#/$defs/options/binding/tls" }, { - "required": [ - "signers" - ] + "oneOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] } ] } @@ -4273,22 +4260,24 @@ "const": "server" }, "options": { - "title": "Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false, - "oneOf": [ + "allOf": [ { - "required": [ - "keys" - ] + + "$ref": "#/$defs/options/binding/tls" }, { - "required": [ - "signers" - ] + "oneOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] } ] } diff --git a/src/.vuepress/public/assets/zilla-schema.json b/src/.vuepress/public/assets/zilla-schema.json index 4dc1a413..0e0b64e1 100644 --- a/src/.vuepress/public/assets/zilla-schema.json +++ b/src/.vuepress/public/assets/zilla-schema.json @@ -475,7 +475,8 @@ "interval": { "anyOf": [ { - "type": "number" + "type": "number", + "default": 30 }, { "$ref": "#/$defs/expression" @@ -485,10 +486,17 @@ "signals": { "type": "array", "items": { - "enum": [ - "metrics", - "logs", - "traces" + "anyOf": [ + { + "type": "string", + "enum": [ + "metrics", + "logs" + ] + }, + { + "$ref": "#/$defs/expression" + } ] } }, @@ -496,10 +504,18 @@ "type": "object", "properties": { "protocol": { - "enum": [ - "http" - ], - "default": "http" + "anyOf": [ + { + "type": "string", + "enum": [ + "http" + ], + "default": "http" + }, + { + "$ref": "#/$defs/expression" + } + ] }, "location": { "anyOf": [ @@ -573,6 +589,7 @@ "endpoints": { "type": "array", "items": { + "type": "object", "properties": { "scheme": { "title": "Scheme", @@ -942,36 +959,6 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { @@ -1042,7 +1029,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Authorization", + "title": "Guard", "type": "object", "properties": { "credentials": { @@ -1287,75 +1274,149 @@ ] }, "cache_server_topics": { - "topics": { - "title": "Topics", - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "defaultOffset": { - "anyOf": [ - { - "type": "string", - "enum": [ - "live", - "historical" - ] - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "deltaType": { - "anyOf": [ - { - "type": "string", - "enum": [ - "none", - "json_patch" - ], - "deprecated": true - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "headers": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "anyOf": [ - { - "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" - }, - { - "$ref": "#/$defs/expression" + "title": "Topics", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "defaultOffset": { + "anyOf": [ + { + "type": "string", + "enum": [ + "live", + "historical" + ], + "default": "historical" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "deltaType": { + "anyOf": [ + { + "type": "string", + "enum": [ + "none", + "json_patch" + ], + "deprecated": true + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "transforms": { + "title": "Transforms", + "type": "array", + "oneOf": [ + { + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "anyOf": [ + { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + }, + "extract-key": { + "anyOf": [ + { + "type": "string", + "additionalProperties": false + }, + { + "$ref": "#/$defs/expression" + } + ] + } } - ] - } + } + ] }, - "additionalProperties": false - }, - "key": { - "$ref": "#/$defs/converter" - }, - "value": { - "$ref": "#/$defs/converter" - } + { + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "anyOf": [ + { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + } + ] + }, + { + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-key": { + "anyOf": [ + { + "type": "string", + "additionalProperties": false + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + ] + } + ] + }, + "key": { + "$ref": "#/$defs/converter" + }, + "value": { + "$ref": "#/$defs/converter" } } } @@ -1435,73 +1496,96 @@ } }, "tcp": { - "properties": { - "host": { - "title": "Host", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "port": { - "title": "Port", - "oneOf": [ - { - "anyOf": [ + "host": { + "title": "Host", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "port": { + "title": "Port", + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + }, + { + "type": "array", + "items": { + "oneOf": [ { - "type": "integer" + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] }, { - "$ref": "#/$defs/expression" + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] } ] - }, + } + } + ] + } + }, + "tls": { + "version": { + "title": "Version", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "keys": { + "title": "Vault Keys", + "type": "array", + "items": { + "anyOf": [ { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] + "type": "string" }, { - "type": "array", - "items": { - "oneOf": [ - { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] - } - ] - } + "$ref": "#/$defs/expression" } ] } }, - "additionalProperties": false - }, - "tls": { - "properties": { - "version": { - "title": "Version", + "trust": { + "title": "Vault Certificates", + "type": "array", + "items": { "anyOf": [ { "type": "string" @@ -1510,102 +1594,78 @@ "$ref": "#/$defs/expression" } ] - }, - "keys": { - "title": "Vault Keys", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "trust": { - "title": "Vault Certificates", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + } + }, + "trustcacerts": { + "title": "Trust CA Certificates", + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/$defs/expression" } - }, - "trustcacerts": { - "title": "Trust CA Certificates", + ] + }, + "sni": { + "title": "Server Names", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "alpn": { + "title": "Application Protocols", + "type": "array", + "items": { "anyOf": [ { - "type": "boolean" + "type": "string" }, { "$ref": "#/$defs/expression" } ] - }, - "sni": { - "title": "Server Names", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "alpn": { - "title": "Application Protocols", - "type": "array", - "items": { - "type": [ - "string", - "null" - ] + } + }, + "mutual": { + "title": "Mutual Authentication", + "anyOf": [ + { + "type": "string", + "enum": [ + "required", + "requested", + "none" + ], + "default": "none" + }, + { + "$ref": "#/$defs/expression" } - }, - "mutual": { - "title": "Mutual Authentication", + ] + }, + "signers": { + "title": "Vault Signer Certificates", + "type": "array", + "items": { "anyOf": [ { - "type": "string", - "enum": [ - "required", - "requested", - "none" - ] + "type": "string" }, { "$ref": "#/$defs/expression" } ] - }, - "signers": { - "title": "Vault Signer Certificates", - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } } - }, - "additionalProperties": false + } } }, "catalog": { @@ -1664,18 +1724,6 @@ } ] }, - "catalog": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "$ref": "#/$defs/cataloged" - } - } - }, - "maxProperties": 1 - }, "type": { "title": "Type", "anyOf": [ @@ -1698,6 +1746,7 @@ "mqtt-kafka", "openapi", "openapi-asyncapi", + "pgsql", "proxy", "sse", "sse-kafka", @@ -1800,18 +1849,6 @@ "$ref": "#/$defs/expression" } ] - }, - "entry": { - "title": "Entry", - "anyOf": [ - { - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" - }, - { - "$ref": "#/$defs/expression" - } - ] } }, "additionalProperties": false, @@ -1819,28 +1856,6 @@ "type", "kind" ], - "anyOf": [ - { - "properties": { - "kind": { - "const": "remote_server" - } - }, - "required": [ - "entry" - ] - }, - { - "properties": { - "kind": { - "not": { - "const": "remote_server" - } - }, - "entry": false - } - } - ], "allOf": [ { "if": { @@ -1863,10 +1878,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "address": { @@ -2036,10 +2057,20 @@ "additionalProperties": false }, "tcp": { - "$ref": "#/$defs/options/binding/tcp" + "title": "tcp Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tcp" + }, + "additionalProperties": false }, "tls": { - "$ref": "#/$defs/options/binding/tls" + "title": "tls Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false }, "http": { "title": "Http", @@ -2126,10 +2157,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "api-id": { @@ -2396,11 +2433,18 @@ ] }, "vault": false, + "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "method": { "title": "Method", @@ -2494,6 +2538,42 @@ } }, "additionalProperties": false + }, + "catalog": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string", + "default": "latest" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "required": [ + "subject" + ], + "additionalProperties": false + }, + "additionalProperties": false + } } } }, @@ -2648,10 +2728,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "method": { "title": "Method", @@ -2734,6 +2820,7 @@ "title": "Filters", "type": "array", "items": { + "type": "object", "properties": { "key": { "title": "Key", @@ -2801,7 +2888,8 @@ "none", "leader_only", "in_sync_replicas" - ] + ], + "default": "in_sync_replicas" }, { "$ref": "#/$defs/expression" @@ -2922,7 +3010,11 @@ "title": "Policy", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "same-origin", + "cross-origin" + ] }, { "$ref": "#/$defs/expression" @@ -3244,10 +3336,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "headers": { "title": "Headers", @@ -3329,10 +3427,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "path": { "title": "Path", @@ -3474,10 +3578,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "method": { "title": "Method", @@ -3494,7 +3604,8 @@ "title": "Path", "anyOf": [ { - "type": "string" + "type": "string", + "pattern": "^/" }, { "$ref": "#/$defs/expression" @@ -3536,6 +3647,7 @@ "title": "Filters", "type": "array", "items": { + "type": "object", "properties": { "key": { "title": "Key", @@ -3660,7 +3772,8 @@ "none", "leader_only", "in_sync_replicas" - ] + ], + "default": "in_sync_replicas" }, { "$ref": "#/$defs/expression" @@ -3766,10 +3879,16 @@ }, "vault": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -3946,7 +4065,8 @@ "none", "leader_only", "in_sync_replicas" - ] + ], + "default": "in_sync_replicas" }, { "$ref": "#/$defs/expression" @@ -4036,10 +4156,16 @@ } }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -4145,9 +4271,22 @@ ] } }, - "exit": false + "exit": false, + "entry": { + "title": "Entry", + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } }, "required": [ + "entry", "routes" ] } @@ -4173,26 +4312,36 @@ }, "vault": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "session": { "title": "Session", "type": "array", "items": { - "client-id": { - "title": "Client Id", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "object", + "additionalProperties": false, + "properties": { + "client-id": { + "title": "Client Id", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } } } }, @@ -4200,33 +4349,41 @@ "title": "Subscribe", "type": "array", "items": { - "topic": { - "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "object", + "additionalProperties": false, + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } } } }, "publish": { - "title": "Subscribe", + "title": "Publish", "type": "array", "items": { - "topic": { - "title": "Topic", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "object", + "additionalProperties": false, + "properties": { + "topic": { + "title": "Topic", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } } } } @@ -4460,10 +4617,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "anyOf": [ { "properties": { @@ -4471,6 +4634,7 @@ "title": "Subscribe", "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -4495,6 +4659,7 @@ "title": "Publish", "type": "array", "items": { + "type": "object", "properties": { "topic": { "title": "Topic", @@ -4578,10 +4743,20 @@ "options": { "properties": { "tcp": { - "$ref": "#/$defs/options/binding/tcp" + "title": "tcp Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tcp" + }, + "additionalProperties": false }, "tls": { - "$ref": "#/$defs/options/binding/tls" + "title": "tls Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false }, "http": { "title": "Http", @@ -4680,18 +4855,6 @@ "required": [ "exit" ] - }, - { - "properties": { - "routes": { - "required": [ - "exit" - ] - } - }, - "required": [ - "routes" - ] } ] }, @@ -4700,13 +4863,6 @@ "kind": { "const": "client" }, - "routes": { - "items": { - "properties": { - "exit": false - } - } - }, "exit": false } } @@ -4844,10 +5000,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "api-id": { "title": "ApiId", @@ -4922,6 +5084,38 @@ ] } }, + { + "if": { + "properties": { + "type": { + "const": "pgsql" + } + } + }, + "then": { + "properties": { + "type": { + "const": "pgsql" + }, + "kind": { + "enum": [ + "client", + "server" + ] + }, + "vault": false, + "options": false, + "routes": false + }, + "anyOf": [ + { + "required": [ + "exit" + ] + } + ] + } + }, { "if": { "properties": { @@ -4944,10 +5138,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "additionalProperties": false, "properties": { "transport": { @@ -5238,10 +5438,16 @@ "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "path": { "title": "Path", @@ -5298,10 +5504,16 @@ "vault": false, "options": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "path": { "title": "Path", @@ -5335,6 +5547,7 @@ "title": "Filters", "type": "array", "items": { + "type": "object", "properties": { "key": { "title": "Key", @@ -5430,13 +5643,24 @@ }, "vault": false, "options": { - "$ref": "#/$defs/options/binding/tcp" + "title": "Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tcp" + }, + "additionalProperties": false }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "authority": { "title": "Authority", @@ -5584,10 +5808,16 @@ ] }, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "authority": { "title": "Authority", @@ -5668,6 +5898,18 @@ } } }, + "if": { + "properties": { + "kind": { + "const": "server" + } + } + }, + "then": { + "required": [ + "vault" + ] + }, "anyOf": [ { "required": [ @@ -5687,7 +5929,24 @@ "const": "client" }, "options": { - "$ref": "#/$defs/options/binding/tls" + "title": "Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] } } }, @@ -5697,7 +5956,24 @@ "const": "server" }, "options": { - "$ref": "#/$defs/options/binding/tls" + "title": "Options", + "type": "object", + "properties": { + "$ref": "#/$defs/options/binding/tls" + }, + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] } } }, @@ -5733,10 +6009,16 @@ }, "vault": false, "routes": { + "title": "Routes", + "type": "array", "items": { + "type": "object", "properties": { "when": { + "title": "When", + "type": "array", "items": { + "type": "object", "properties": { "protocol": { "title": "Subprotocol", @@ -5972,43 +6254,16 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { "strategy": { "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, { "$ref": "#/$defs/expression" @@ -6276,7 +6531,7 @@ "multiple": { "anyOf": [ { - "type": "number" + "type": "integer" }, { "$ref": "#/$defs/expression" @@ -6326,43 +6581,16 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { "strategy": { "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, { "$ref": "#/$defs/expression" @@ -6492,54 +6720,16 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "record": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "schema", - "record" - ], - "additionalProperties": false - }, { "type": "object", "properties": { "strategy": { "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, { "$ref": "#/$defs/expression" @@ -6983,43 +7173,16 @@ ], "additionalProperties": false }, - { - "type": "object", - "properties": { - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "schema" - ], - "additionalProperties": false - }, { "type": "object", "properties": { "strategy": { "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, { "$ref": "#/$defs/expression" diff --git a/src/reference/config/bindings/.partials/options-http-auth.md b/src/reference/config/bindings/.partials/options-http-auth.md index 969b4265..6f396aec 100644 --- a/src/reference/config/bindings/.partials/options-http-auth.md +++ b/src/reference/config/bindings/.partials/options-http-auth.md @@ -16,7 +16,7 @@ Named cookie value pattern with `{credentials}`. Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. -#### credentials.query +#### credentials.query\* > `object` as map of named: `string` properties diff --git a/src/reference/config/bindings/.partials/options-mqtt-auth.md b/src/reference/config/bindings/.partials/options-mqtt-auth.md index 4945446e..0b12804c 100644 --- a/src/reference/config/bindings/.partials/options-mqtt-auth.md +++ b/src/reference/config/bindings/.partials/options-mqtt-auth.md @@ -4,7 +4,7 @@ Defines how to extract credentials from the MQTT connect packet. -#### credentials.connect +#### credentials.connect\* > `object` diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index 2614c968..3ee5ccb5 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -100,7 +100,7 @@ Named cookie value pattern with `{credentials}`. Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. -#### credentials.query +#### credentials.query\* > `object` as map of named: `string` properties diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index 855e4f5c..c2d5eb70 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -1,5 +1,5 @@ -### routes +### routes\* > `array` of `object` diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index b5de48f8..62a74bdb 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -1,4 +1,4 @@ -### routes +### routes\* > `array` of `object` diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 4788ec2c..3fed7fcc 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -89,19 +89,19 @@ Omission of the allow object means Zilla will allow all origins, methods and hea > `array` of `string` -Allowed request origins. +Allowed request origins. Omission of this property is considered allow all `*`. #### allow.methods > `array` of `string` -Allowed request methods. +Allowed request methods. Omission of this property is considered allow all `*`. #### allow.headers > `array` of `string` -Allowed request headers. +Allowed request headers. Omission of this property is considered allow all `*`. #### allow.credentials diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index d7a92119..20769df9 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -1,4 +1,4 @@ -### routes +### routes\* > `array` of `object` diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index 033caaa3..4f0b6d23 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -1,4 +1,4 @@ -### routes +### routes\* > `array` of `object` diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index b9c59971..6f00a3c2 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -88,7 +88,7 @@ Named cookie value pattern with `{credentials}`. Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. -#### credentials.query +#### credentials.query\* > `object` as map of named: `string` properties diff --git a/src/reference/config/bindings/tcp/.partials/options.md b/src/reference/config/bindings/tcp/.partials/options.md index 2d7d490c..941c30c3 100644 --- a/src/reference/config/bindings/tcp/.partials/options.md +++ b/src/reference/config/bindings/tcp/.partials/options.md @@ -20,4 +20,16 @@ Hostname or IP address. > `integer`, `string`, `array` -Port number(s), including port number ranges. +Port number(s), including port number ranges with the pattern: `^\\d+(-\\d+)?$`. + +```yaml +options: + port: 12345 +``` + +```yaml +options: + port: + - 12345 + - "54320-54330" +``` diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index d8b332c7..93cb4635 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -1,4 +1,4 @@ -### routes +### routes\* > `array` of `object` diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index 00f844b6..80a5be35 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -1,4 +1,4 @@ -### routes +### routes\* > `array` of `object` From 3a2667e6bceb75d40629e5c510f7472db768cd40 Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 6 Sep 2024 09:38:44 -0400 Subject: [PATCH 36/54] update schema from zilla --- .check-schema/zilla-schema.json | 46 +-- src/.vuepress/public/assets/zilla-schema.json | 353 ++++++++---------- 2 files changed, 176 insertions(+), 223 deletions(-) diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 438e7bc5..95f836e7 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -1147,6 +1147,8 @@ }, "catalog": { "schema-registry": { + "title": "Schema Registry", + "type": "object", "properties": { "url": { "type": "string" @@ -4231,26 +4233,7 @@ "const": "client" }, "options": { - "allOf": [ - { - - "$ref": "#/$defs/options/binding/tls" - }, - { - "oneOf": [ - { - "required": [ - "keys" - ] - }, - { - "required": [ - "signers" - ] - } - ] - } - ] + "$ref": "#/$defs/options/binding/tls" } } }, @@ -4262,22 +4245,21 @@ "options": { "allOf": [ { - "$ref": "#/$defs/options/binding/tls" }, { "oneOf": [ - { - "required": [ - "keys" - ] - }, - { - "required": [ - "signers" - ] - } - ] + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] } ] } diff --git a/src/.vuepress/public/assets/zilla-schema.json b/src/.vuepress/public/assets/zilla-schema.json index 0e0b64e1..f9fb4ce2 100644 --- a/src/.vuepress/public/assets/zilla-schema.json +++ b/src/.vuepress/public/assets/zilla-schema.json @@ -1496,82 +1496,11 @@ } }, "tcp": { - "host": { - "title": "Host", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "port": { - "title": "Port", - "oneOf": [ - { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] - }, - { - "type": "array", - "items": { - "oneOf": [ - { - "anyOf": [ - { - "type": "integer" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - { - "anyOf": [ - { - "type": "string", - "pattern": "^\\d+(-\\d+)?$" - } - ] - } - ] - } - } - ] - } - }, - "tls": { - "version": { - "title": "Version", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "keys": { - "title": "Vault Keys", - "type": "array", - "items": { + "title": "tcp Options", + "type": "object", + "properties": { + "host": { + "title": "Host", "anyOf": [ { "type": "string" @@ -1580,37 +1509,64 @@ "$ref": "#/$defs/expression" } ] - } - }, - "trust": { - "title": "Vault Certificates", - "type": "array", - "items": { - "anyOf": [ + }, + "port": { + "title": "Port", + "oneOf": [ { - "type": "string" + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] }, { - "$ref": "#/$defs/expression" + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + { + "anyOf": [ + { + "type": "string", + "pattern": "^\\d+(-\\d+)?$" + } + ] + } + ] + } } ] } }, - "trustcacerts": { - "title": "Trust CA Certificates", - "anyOf": [ - { - "type": "boolean" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "sni": { - "title": "Server Names", - "type": "array", - "items": { + "additionalProperties": false + }, + "tls": { + "title": "tls Options", + "type": "object", + "properties": { + "version": { + "title": "Version", "anyOf": [ { "type": "string" @@ -1619,57 +1575,113 @@ "$ref": "#/$defs/expression" } ] - } - }, - "alpn": { - "title": "Application Protocols", - "type": "array", - "items": { + }, + "keys": { + "title": "Vault Keys", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "trust": { + "title": "Vault Certificates", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "trustcacerts": { + "title": "Trust CA Certificates", "anyOf": [ { - "type": "string" + "type": "boolean" }, { "$ref": "#/$defs/expression" } ] - } - }, - "mutual": { - "title": "Mutual Authentication", - "anyOf": [ - { - "type": "string", - "enum": [ - "required", - "requested", - "none" - ], - "default": "none" - }, - { - "$ref": "#/$defs/expression" + }, + "sni": { + "title": "Server Names", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] } - ] - }, - "signers": { - "title": "Vault Signer Certificates", - "type": "array", - "items": { + }, + "alpn": { + "title": "Application Protocols", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "mutual": { + "title": "Mutual Authentication", "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "required", + "requested", + "none" + ], + "default": "none" }, { "$ref": "#/$defs/expression" } ] + }, + "signers": { + "title": "Vault Signer Certificates", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } } - } + }, + "additionalProperties": false } }, "catalog": { "schema-registry": { + "title": "Schema Registry", + "type": "object", "properties": { "url": { "anyOf": [ @@ -2057,20 +2069,10 @@ "additionalProperties": false }, "tcp": { - "title": "tcp Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tcp" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tcp" }, "tls": { - "title": "tls Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tls" }, "http": { "title": "Http", @@ -4743,20 +4745,10 @@ "options": { "properties": { "tcp": { - "title": "tcp Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tcp" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tcp" }, "tls": { - "title": "tls Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tls" }, "http": { "title": "Http", @@ -5643,12 +5635,7 @@ }, "vault": false, "options": { - "title": "Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tcp" - }, - "additionalProperties": false + "$ref": "#/$defs/options/binding/tcp" }, "routes": { "title": "Routes", @@ -5929,24 +5916,7 @@ "const": "client" }, "options": { - "title": "Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "keys" - ] - }, - { - "required": [ - "signers" - ] - } - ] + "$ref": "#/$defs/options/binding/tls" } } }, @@ -5956,21 +5926,22 @@ "const": "server" }, "options": { - "title": "Options", - "type": "object", - "properties": { - "$ref": "#/$defs/options/binding/tls" - }, - "additionalProperties": false, - "oneOf": [ + "allOf": [ { - "required": [ - "keys" - ] + "$ref": "#/$defs/options/binding/tls" }, { - "required": [ - "signers" + "oneOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } ] } ] From 3864282f7813ffc46493835a1ab63429f5815581 Mon Sep 17 00:00:00 2001 From: AJ Date: Mon, 9 Sep 2024 16:27:40 -0400 Subject: [PATCH 37/54] update property descritpions --- .check-schema/README.md | 4 +- .check-schema/eslint.config.mjs | 9 + .check-schema/index.js | 14 +- .check-schema/package.json | 4 + .check-schema/pnpm-lock.yaml | 680 ++++++++++++++++++ .check-schema/zilla-schema.json | 169 +++-- src/.vuepress/config.ts | 2 +- src/.vuepress/public/assets/zilla-schema.json | 582 +++++++-------- .../config/bindings/.partials/cataloged.md | 2 +- .../config/bindings/amqp/.partials/routes.md | 2 +- .../bindings/asyncapi/.partials/options.md | 10 +- .../bindings/asyncapi/.partials/routes.md | 2 +- .../config/bindings/asyncapi/client.md | 12 +- .../config/bindings/asyncapi/proxy.md | 14 +- .../config/bindings/asyncapi/server.md | 10 +- .../bindings/grpc-kafka/.partials/routes.md | 2 +- .../config/bindings/grpc/.partials/routes.md | 2 +- src/reference/config/bindings/grpc/server.md | 6 +- .../http-filesystem/.partials/routes.md | 2 +- .../bindings/http-kafka/.partials/routes.md | 4 +- .../config/bindings/http/.partials/options.md | 18 + .../config/bindings/http/.partials/routes.md | 2 +- src/reference/config/bindings/http/server.md | 2 +- .../bindings/kafka-grpc/.partials/routes.md | 4 +- .../config/bindings/kafka/.partials/routes.md | 2 +- .../bindings/mqtt-kafka/.partials/routes.md | 2 +- .../config/bindings/mqtt/.partials/routes.md | 6 +- src/reference/config/bindings/mqtt/client.md | 2 +- src/reference/config/bindings/mqtt/server.md | 2 +- .../openapi-asyncapi/.partials/options.md | 14 +- .../openapi-asyncapi/.partials/routes.md | 4 +- .../bindings/openapi/.partials/options.md | 10 +- .../config/bindings/proxy/.partials/routes.md | 4 +- .../bindings/sse-kafka/.partials/routes.md | 2 +- .../config/bindings/sse/.partials/routes.md | 2 +- .../config/bindings/tcp/.partials/routes.md | 8 +- src/reference/config/bindings/tcp/client.md | 8 - src/reference/config/bindings/tcp/server.md | 7 - .../config/bindings/tls/.partials/routes.md | 2 +- .../config/bindings/ws/.partials/routes.md | 2 +- .../.partials/options-schema-registry.md | 2 + .../config/catalogs/apicurio-registry.md | 2 + src/reference/config/catalogs/aws-glue.md | 2 + src/reference/config/catalogs/filesystem.md | 4 +- src/reference/config/catalogs/inline.md | 4 +- .../config/models/.partials/cataloged.md | 2 +- .../config/models/.partials/integer.md | 6 + .../config/models/.partials/number.md | 6 + src/reference/config/models/protobuf.md | 2 +- .../config/telemetry/exporters/otlp.md | 12 +- 50 files changed, 1243 insertions(+), 434 deletions(-) create mode 100644 .check-schema/eslint.config.mjs diff --git a/.check-schema/README.md b/.check-schema/README.md index 0c70a1be..9fb441c3 100644 --- a/.check-schema/README.md +++ b/.check-schema/README.md @@ -7,8 +7,8 @@ This project compares the JSON Schema from the Zilla to the [Reference](../src/r In the repository root directory run: ```bash -docker run -it --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema.plain > ./.check-schema/zilla-schema.json -docker run -it --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema > ./src/.vuepress/public/assets/zilla-schema.json +docker run --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:develop-SNAPSHOT start -v -Pzilla.engine.verbose.schema.plain > ./.check-schema/zilla-schema.json +docker run --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:develop-SNAPSHOT start -v -Pzilla.engine.verbose.schema > ./src/.vuepress/public/assets/zilla-schema.json ``` Once the docker container has printed "started" it must be deleted for the command to complete. diff --git a/.check-schema/eslint.config.mjs b/.check-schema/eslint.config.mjs new file mode 100644 index 00000000..19b02cd6 --- /dev/null +++ b/.check-schema/eslint.config.mjs @@ -0,0 +1,9 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; + + +export default [ + { files: ["**/*.js"], languageOptions: { sourceType: "commonjs" } }, + { languageOptions: { globals: globals.browser } }, + pluginJs.configs.recommended, +]; diff --git a/.check-schema/index.js b/.check-schema/index.js index 237f8aea..1feeb166 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -1,3 +1,4 @@ +const process = require('node:process'); const fs = require("fs"); const path = require("path"); const { marked } = require("marked"); @@ -30,7 +31,7 @@ const main = async () => { function getOptions(name, parent, childProps){ var anyOfProps = parent.anyOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); var oneOfProps = parent.oneOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); - return (childProps?.options !== false ? { + return (childProps?.options !== false && parent?.properties?.options !== false ? { ...parent?.properties?.options, ...childProps?.options, properties: { @@ -151,11 +152,11 @@ const main = async () => { ); //collect - if (!!!i) return + if (!i) return var req = !!reqKeys?.includes(k); var path = [attr, k].filter((s) => !!s).join("."); var type = getType(i); - if (patternProperties) type = "`object` as map of named:" + type; + if (patternProperties) type = "`object` as map of named: " + type; if (i.properties && Object.keys(i.properties).length) { props.push([path, req, type, getExtraProps(i)]); @@ -204,7 +205,6 @@ const main = async () => { return props; } - var sections = []; var sections = Object.entries({ guard: schema.properties.guards.patternProperties[Object.keys(schema.properties.guards.patternProperties)[0]], vault: schema.properties.vaults.patternProperties[Object.keys(schema.properties.vaults.patternProperties)[0]], @@ -274,7 +274,7 @@ const main = async () => { anyOf: [...(then.anyOf || [])], }, required: [...(exporterProps?.required || []), ...(then.required || [])], - })) + })) || {} ); sections.push( ...schema.$defs.converter.model?.allOf.map(({ if: fi, then }) => ({ @@ -285,7 +285,7 @@ const main = async () => { anyOf: (then.anyOf || []), }, required: (then.required || []), - })) + })) || {} ); // console.log("sections", JSON.stringify(sections)); @@ -325,7 +325,7 @@ const main = async () => { name: a[0], required: a[1] || false, type: a[2] || '', - extra: (a[3] ? Object.entries(a[3]).filter(([_, o]) => (!!o)).map(([k, o]) => (`${k.charAt(0).toUpperCase() + k.slice(1).toLowerCase()}: ${o}`)).join(' ') : ''), + extra: (a[3] ? Object.entries(a[3]).filter((e) => (!!e[1])).map(([k, o]) => (`${k.charAt(0).toUpperCase() + k.slice(1).toLowerCase()}: ${o}`)).join(' ') : ''), } }), {}); diff --git a/.check-schema/package.json b/.check-schema/package.json index 3f145229..856216b1 100644 --- a/.check-schema/package.json +++ b/.check-schema/package.json @@ -5,6 +5,7 @@ "main": "index.js", "scripts": { "check": "node index.js", + "lint": "eslint --fix", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], @@ -12,6 +13,9 @@ "license": "ISC", "devDependencies": { "@apidevtools/json-schema-ref-parser": "^11.7.0", + "@eslint/js": "^9.9.1", + "eslint": "^9.9.1", + "globals": "^15.9.0", "marked": "^11.0.0" } } diff --git a/.check-schema/pnpm-lock.yaml b/.check-schema/pnpm-lock.yaml index af7319d0..f0b46e0e 100644 --- a/.check-schema/pnpm-lock.yaml +++ b/.check-schema/pnpm-lock.yaml @@ -11,6 +11,15 @@ importers: '@apidevtools/json-schema-ref-parser': specifier: ^11.7.0 version: 11.7.0 + '@eslint/js': + specifier: ^9.9.1 + version: 9.9.1 + eslint: + specifier: ^9.9.1 + version: 9.9.1 + globals: + specifier: ^15.9.0 + version: 15.9.0 marked: specifier: ^11.0.0 version: 11.2.0 @@ -21,24 +30,368 @@ packages: resolution: {integrity: sha512-pRrmXMCwnmrkS3MLgAIW5dXRzeTv6GLjkjb4HmxNnvAKXN1Nfzp4KmGADBQvlVUcqi+a5D+hfGDLLnd5NnYxog==} engines: {node: '>= 16'} + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.9.1': + resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.9.0: + resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + engines: {node: '>=18'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + marked@11.2.0: resolution: {integrity: sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==} engines: {node: '>= 18'} hasBin: true + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + snapshots: '@apidevtools/json-schema-ref-parser@11.7.0': @@ -47,14 +400,341 @@ snapshots: '@types/json-schema': 7.0.15 js-yaml: 4.1.0 + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1)': + dependencies: + eslint: 9.9.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.9.1': {} + + '@eslint/object-schema@2.1.4': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + '@jsdevtools/ono@7.1.3': {} + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + '@types/json-schema@7.0.15': {} + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + argparse@2.0.1: {} + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + callsites@3.1.0: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + escape-string-regexp@4.0.0: {} + + eslint-scope@8.0.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.0.0: {} + + eslint@9.9.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.18.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.9.1 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@15.9.0: {} + + has-flag@4.0.0: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-path-inside@3.0.3: {} + + isexe@2.0.0: {} + js-yaml@4.1.0: dependencies: argparse: 2.0.1 + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + marked@11.2.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + ms@2.1.3: {} + + natural-compare@1.4.0: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + prelude-ls@1.2.1: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + resolve-from@4.0.0: {} + + reusify@1.0.4: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + text-table@0.2.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + yocto-queue@0.1.0: {} diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 95f836e7..107638a2 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -459,6 +459,7 @@ } }, "catalog": { + "title": "Catalog", "type": "object", "properties": { "type": { @@ -917,64 +918,26 @@ "transforms": { "title": "Transforms", "type": "array", - "oneOf": [ + "items": [ { - "items": [ - { - "type": "object", - "additionalProperties": false, - "properties": { - "extract-headers": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" - } - }, - "additionalProperties": false - }, - "extract-key": { - "type": "string", - "additionalProperties": false - } - } - } - ] - }, - { - "items": [ - { - "type": "object", - "additionalProperties": false, - "properties": { - "extract-headers": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" - } - }, - "additionalProperties": false - } - } - } - ] - }, - { - "items": [ - { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { "type": "object", - "additionalProperties": false, - "properties": { - "extract-key": { + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "string", - "additionalProperties": false + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" } - } + }, + "additionalProperties": false + }, + "extract-key": { + "type": "string", + "additionalProperties": false } - ] + } } ] }, @@ -1175,6 +1138,10 @@ "title": "Vault", "type": "string" }, + "catalog": { + "title": "Catalog", + "type": "object" + }, "type": { "title": "Type", "type": "string", @@ -1272,6 +1239,11 @@ "exit": { "title": "Exit", "type": "string" + }, + "entry": { + "title": "Entry", + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" } }, "additionalProperties": false, @@ -1298,6 +1270,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -1369,6 +1343,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "options": { "properties": { "specs": { @@ -1403,6 +1379,7 @@ } }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -1629,6 +1606,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": false, @@ -1654,6 +1633,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": false @@ -1690,6 +1671,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -1734,7 +1717,6 @@ ] }, "vault": false, - "options": false, "routes": { "title": "Routes", "type": "array", @@ -1798,6 +1780,7 @@ "kind": { "const": "server" }, + "entry": false, "options": { "properties": { "services": { @@ -1813,26 +1796,30 @@ "additionalProperties": false }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "object", - "properties": { - "subject": { - "type": "string" + "type": "array", + "items": { + "type": "object", + "properties": { + "subject": { + "type": "string" + }, + "version": { + "type": "string", + "default": "latest" + } }, - "version": { - "type": "string", - "default": "latest" - } - }, - "required": [ - "subject" - ], - "additionalProperties": false - }, - "additionalProperties": false - } + "required": [ + "subject" + ], + "additionalProperties": false + } + } + }, + "maxProperties": 1 } } }, @@ -1841,6 +1828,8 @@ "kind": { "const": "client" }, + "entry": false, + "catalog": false, "options": false } } @@ -1865,6 +1854,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -2095,6 +2086,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -2431,6 +2424,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -2501,6 +2496,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -2737,6 +2734,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "routes": { "title": "Routes", @@ -2878,6 +2877,7 @@ "remote_server" ] }, + "catalog": false, "vault": false, "options": { "properties": { @@ -3037,6 +3037,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "routes": { "title": "Routes", @@ -3200,6 +3202,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -3369,6 +3373,8 @@ "server" ] }, + "entry": false, + "catalog": false, "options": { "properties": { "tcp": { @@ -3410,6 +3416,7 @@ } }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -3485,6 +3492,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -3500,6 +3509,7 @@ "type": "object", "properties": { "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -3534,6 +3544,7 @@ "type": "object", "properties": { "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -3645,6 +3656,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": false @@ -3677,6 +3690,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -3827,6 +3842,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -3917,6 +3934,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -4022,6 +4041,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "$ref": "#/$defs/options/binding/tcp" @@ -4147,6 +4168,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "routes": { "title": "Routes", "type": "array", @@ -4295,6 +4318,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "routes": { "title": "Routes", @@ -4447,6 +4472,7 @@ ] }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -4655,6 +4681,7 @@ "const": "json" }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -4741,6 +4768,7 @@ ] }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -5030,6 +5058,7 @@ "const": "json" }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts index a8471902..e3a7de80 100644 --- a/src/.vuepress/config.ts +++ b/src/.vuepress/config.ts @@ -58,7 +58,7 @@ export default defineUserConfig({ ], markdown: { headers: { - level: [2, 3], + level: [2, 3, 4], }, }, }); diff --git a/src/.vuepress/public/assets/zilla-schema.json b/src/.vuepress/public/assets/zilla-schema.json index f9fb4ce2..0fd7ef04 100644 --- a/src/.vuepress/public/assets/zilla-schema.json +++ b/src/.vuepress/public/assets/zilla-schema.json @@ -159,13 +159,13 @@ "type": { "anyOf": [ { - "type": "string", - "default": "pkcs12" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "pkcs12" }, "password": { "anyOf": [ @@ -197,13 +197,13 @@ "type": { "anyOf": [ { - "type": "string", - "default": "pkcs12" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "pkcs12" }, "password": { "anyOf": [ @@ -235,13 +235,13 @@ "type": { "anyOf": [ { - "type": "string", - "default": "pkcs12" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "pkcs12" }, "password": { "anyOf": [ @@ -475,13 +475,13 @@ "interval": { "anyOf": [ { - "type": "number", - "default": 30 + "type": "number" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": 30 }, "signals": { "type": "array", @@ -509,13 +509,13 @@ "type": "string", "enum": [ "http" - ], - "default": "http" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "http" }, "location": { "anyOf": [ @@ -662,6 +662,7 @@ } }, "catalog": { + "title": "Catalog", "type": "object", "properties": { "type": { @@ -728,13 +729,13 @@ "group-id": { "anyOf": [ { - "type": "string", - "default": "default" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "default" }, "use-id": { "anyOf": [ @@ -743,13 +744,13 @@ "enum": [ "globalId", "contentId" - ], - "default": "globalId" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "globalId" }, "id-encoding": { "anyOf": [ @@ -758,25 +759,25 @@ "enum": [ "default", "legacy" - ], - "default": "default" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "default" }, "max-age": { "title": "Max Age", "anyOf": [ { - "type": "number", - "default": 300 + "type": "number" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": 300 } }, "additionalProperties": false @@ -857,13 +858,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" }, "schema": { "anyOf": [ @@ -975,13 +976,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -1005,13 +1006,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -1297,13 +1298,13 @@ "enum": [ "live", "historical" - ], - "default": "historical" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "historical" }, "deltaType": { "anyOf": [ @@ -1323,92 +1324,40 @@ "transforms": { "title": "Transforms", "type": "array", - "oneOf": [ + "items": [ { - "items": [ - { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { "type": "object", - "additionalProperties": false, - "properties": { - "extract-headers": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "anyOf": [ - { - "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "additionalProperties": false - }, - "extract-key": { + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "anyOf": [ { "type": "string", - "additionalProperties": false + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" }, { "$ref": "#/$defs/expression" } ] } - } - } - ] - }, - { - "items": [ - { - "type": "object", - "additionalProperties": false, - "properties": { - "extract-headers": { - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "anyOf": [ - { - "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, + }, + "additionalProperties": false + }, + "extract-key": { + "anyOf": [ + { + "type": "string", "additionalProperties": false + }, + { + "$ref": "#/$defs/expression" } - } - } - ] - }, - { - "items": [ - { - "type": "object", - "additionalProperties": false, - "properties": { - "extract-key": { - "anyOf": [ - { - "type": "string", - "additionalProperties": false - }, - { - "$ref": "#/$defs/expression" - } - ] - } - } + ] } - ] + } } ] }, @@ -1652,13 +1601,13 @@ "required", "requested", "none" - ], - "default": "none" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "none" }, "signers": { "title": "Vault Signer Certificates", @@ -1696,25 +1645,25 @@ "context": { "anyOf": [ { - "type": "string", - "default": "default" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "default" }, "max-age": { "title": "Max Age", "anyOf": [ { - "type": "number", - "default": 300 + "type": "number" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": 300 } }, "additionalProperties": false @@ -1736,6 +1685,10 @@ } ] }, + "catalog": { + "title": "Catalog", + "type": "object" + }, "type": { "title": "Type", "anyOf": [ @@ -1861,6 +1814,18 @@ "$ref": "#/$defs/expression" } ] + }, + "entry": { + "title": "Entry", + "anyOf": [ + { + "type": "string", + "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" + }, + { + "$ref": "#/$defs/expression" + } + ] } }, "additionalProperties": false, @@ -1887,6 +1852,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -1922,13 +1889,13 @@ "send_only", "receive_only", "send_and_receive" - ], - "default": "send_and_receive" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "send_and_receive" } } } @@ -1972,6 +1939,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "options": { "properties": { "specs": { @@ -2027,6 +1996,7 @@ } }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -2045,13 +2015,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -2316,6 +2286,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": false, @@ -2341,6 +2313,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": false @@ -2377,6 +2351,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -2399,13 +2375,13 @@ "enum": [ "follow", "ignore" - ], - "default": "ignore" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "ignore" } }, "additionalProperties": false @@ -2435,7 +2411,6 @@ ] }, "vault": false, - "options": false, "routes": { "title": "Routes", "type": "array", @@ -2520,6 +2495,7 @@ "kind": { "const": "server" }, + "entry": false, "options": { "properties": { "services": { @@ -2542,40 +2518,44 @@ "additionalProperties": false }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "object", - "properties": { - "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] + "type": "array", + "items": { + "type": "object", + "properties": { + "subject": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + }, + "version": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ], + "default": "latest" + } }, - "version": { - "anyOf": [ - { - "type": "string", - "default": "latest" - }, - { - "$ref": "#/$defs/expression" - } - ] - } - }, - "required": [ - "subject" - ], - "additionalProperties": false - }, - "additionalProperties": false - } + "required": [ + "subject" + ], + "additionalProperties": false + } + } + }, + "maxProperties": 1 } } }, @@ -2584,6 +2564,8 @@ "kind": { "const": "client" }, + "entry": false, + "catalog": false, "options": false } } @@ -2608,6 +2590,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -2621,25 +2605,25 @@ { "type": "integer", "minimum": 1, - "maximum": 536870911, - "default": 32767 + "maximum": 536870911 }, { "$ref": "#/$defs/expression" } - ] + ], + "default": 32767 }, "metadata": { "title": "Grpc Last Message Id Metadata Name", "anyOf": [ { - "type": "string", - "default": "last-message-id" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "last-message-id" } } }, @@ -2651,13 +2635,13 @@ "title": "Idempotency Metadata name", "anyOf": [ { - "type": "string", - "default": "idempotency-key" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "idempotency-key" } } }, @@ -2673,49 +2657,49 @@ "title": "Grpc Service Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:service" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:service" }, "method": { "title": "Grpc Method Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:method" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:method" }, "correlation-id": { "title": "Correlation-Id Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:correlation-id" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:correlation-id" }, "reply-to": { "title": "Reply to Topic", "anyOf": [ { - "type": "string", - "default": "zilla:reply-to" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:reply-to" } }, "additionalProperties": false @@ -2890,13 +2874,13 @@ "none", "leader_only", "in_sync_replicas" - ], - "default": "in_sync_replicas" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "in_sync_replicas" }, "key": { "title": "Key", @@ -2978,6 +2962,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -3426,6 +3412,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -3510,6 +3498,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -3521,13 +3511,13 @@ "title": "Idempotency Key HTTP Header", "anyOf": [ { - "type": "string", - "default": "idempotency-key" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "idempotency-key" } }, "required": [ @@ -3547,25 +3537,25 @@ "title": "Reply-To Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:reply-to" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:reply-to" }, "correlation-id": { "title": "Correlation-Id Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:correlation-id" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:correlation-id" } }, "additionalProperties": false @@ -3774,13 +3764,13 @@ "none", "leader_only", "in_sync_replicas" - ], - "default": "in_sync_replicas" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "in_sync_replicas" }, "key": { "title": "Key", @@ -3879,6 +3869,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "routes": { "title": "Routes", @@ -4055,6 +4047,7 @@ "remote_server" ] }, + "catalog": false, "vault": false, "options": { "properties": { @@ -4067,13 +4060,13 @@ "none", "leader_only", "in_sync_replicas" - ], - "default": "in_sync_replicas" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "in_sync_replicas" }, "idempotency": { "title": "Idempotency", @@ -4083,13 +4076,13 @@ "title": "Idempotency Metadata name", "anyOf": [ { - "type": "string", - "default": "idempotency-key" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "idempotency-key" } } }, @@ -4105,49 +4098,49 @@ "title": "Grpc Service Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:service" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:service" }, "method": { "title": "Grpc Method Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:method" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:method" }, "correlation-id": { "title": "Correlation-Id Kafka Header", "anyOf": [ { - "type": "string", - "default": "zilla:correlation-id" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:correlation-id" }, "reply-to": { "title": "Reply to Topic", "anyOf": [ { - "type": "string", - "default": "zilla:reply-to" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "zilla:reply-to" } }, "additionalProperties": false @@ -4312,6 +4305,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "routes": { "title": "Routes", @@ -4510,6 +4505,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -4597,13 +4594,13 @@ "at_most_once", "at_least_once", "exactly_once" - ], - "default": "exactly_once" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "exactly_once" }, "additionalProperties": false }, @@ -4742,6 +4739,8 @@ "server" ] }, + "entry": false, + "catalog": false, "options": { "properties": { "tcp": { @@ -4790,6 +4789,7 @@ } }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -4808,13 +4808,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -4879,6 +4879,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { @@ -4894,6 +4896,7 @@ "type": "object", "properties": { "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -4912,13 +4915,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -4942,6 +4945,7 @@ "type": "object", "properties": { "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -4960,13 +4964,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -5095,6 +5099,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": false @@ -5127,6 +5133,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -5382,19 +5390,21 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "properties": { "retry": { "anyOf": [ { - "type": "integer", - "default": 2000 + "type": "integer" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": 2000 }, "requests": { "type": "array", @@ -5493,6 +5503,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "vault": false, "options": false, "routes": { @@ -5580,13 +5592,13 @@ "enum": [ "${etag}", "[\"${base64(key)}\",\"${etag}\"]" - ], - "default": "${etag}" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "${etag}" } } } @@ -5633,6 +5645,8 @@ "client" ] }, + "entry": false, + "catalog": false, "vault": false, "options": { "$ref": "#/$defs/options/binding/tcp" @@ -5794,6 +5808,8 @@ "proxy" ] }, + "entry": false, + "catalog": false, "routes": { "title": "Routes", "type": "array", @@ -5978,6 +5994,8 @@ "server" ] }, + "entry": false, + "catalog": false, "vault": false, "routes": { "title": "Routes", @@ -6200,6 +6218,7 @@ ] }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -6244,13 +6263,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -6274,13 +6293,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -6321,13 +6340,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -6374,13 +6393,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -6427,13 +6446,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -6480,13 +6499,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -6527,6 +6546,7 @@ "const": "json" }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -6571,13 +6591,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -6601,13 +6621,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -6655,6 +6675,7 @@ ] }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -6710,13 +6731,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" }, "record": { "anyOf": [ @@ -6751,13 +6772,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" }, "record": { "anyOf": [ @@ -6913,13 +6934,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -6966,13 +6987,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -7019,13 +7040,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -7072,13 +7093,13 @@ "enum": [ "binary", "text" - ], - "default": "text" + ] }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "text" }, "range": { "anyOf": [ @@ -7119,6 +7140,7 @@ "const": "json" }, "catalog": { + "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { @@ -7163,13 +7185,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ @@ -7193,13 +7215,13 @@ "version": { "anyOf": [ { - "type": "string", - "default": "latest" + "type": "string" }, { "$ref": "#/$defs/expression" } - ] + ], + "default": "latest" } }, "required": [ diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md index 8c8e0e47..96870073 100644 --- a/src/reference/config/bindings/.partials/cataloged.md +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -1,6 +1,6 @@ ### catalog -> `object` as map of named:`array` +> `object` as map of named: `array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md index 1ea08587..b8a89f8b 100644 --- a/src/reference/config/bindings/amqp/.partials/routes.md +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -14,7 +14,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index 3ee5ccb5..8ff091a2 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -1,12 +1,12 @@ #### options.specs -> `object` as map of named:`object` +> `object` as map of named: `object` specs specific options #### specs.catalog -> `object` as map of named:`object` +> `object` as map of named: `object` To map defined catalog for schema retrieval based on catalog specific parameters. @@ -26,6 +26,8 @@ Specific iteration or version of a registered schema in the defined catalog. > `array` of `object` +The servers to match from the schema that are used when defining endpoints. + #### servers[].url > `string` | Pattern: `^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$` @@ -48,7 +50,7 @@ The server pathname to match based on the server's `pathname` in an asyncapi `3. > `object` -`client` specific `tcp` options. +TCP options to connect to an external client. #### tcp.host @@ -70,7 +72,7 @@ http specific options. #### http.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md index 1b3ca397..3a9089a1 100644 --- a/src/reference/config/bindings/asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -24,7 +24,7 @@ Conditional `asyncapi`-specific routes for adapting streams. #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 5f392059..21c0fdc3 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -57,6 +57,8 @@ Fetch offset to use for new consumers > `array` + + #### kafka.sasl > `object` @@ -119,11 +121,11 @@ messages: mqttMessages > `object` -http specific options. +HTTP specific options. #### http.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -141,9 +143,11 @@ authorization: > `object` +MQTT specific options. + #### mqtt.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -161,7 +165,7 @@ authorization: > `object` -`tls` specific options. +TLS specific options. diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index bbf5feee..a4d2dbea 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -57,6 +57,8 @@ Fetch offset to use for new consumers > `array` + + #### kafka.sasl > `object` @@ -119,11 +121,11 @@ messages: mqttMessages > `object` -http specific options. +HTTP specific options. #### http.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -141,9 +143,11 @@ authorization: > `object` +MQTT specific options. + #### mqtt.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -161,7 +165,7 @@ authorization: > `object` -`tls` specific options. +TLS specific options. @@ -170,7 +174,7 @@ authorization: > `string` -Default exit binding when no conditional routes are viable. +Next binding when following this route. ```yaml routes: diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 2a05906c..dbb69bdf 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -57,6 +57,8 @@ Fetch offset to use for new consumers > `array` + + #### kafka.sasl > `object` @@ -123,7 +125,7 @@ http specific options. #### http.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -141,9 +143,11 @@ authorization: > `object` +MQTT specific options. + #### mqtt.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -171,7 +175,7 @@ authorization: > `string` -Default exit binding when no conditional routes are viable. +Next binding when following this route. ```yaml routes: diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index 03924f9a..ef828696 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -45,7 +45,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` Roles required by named guard. diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index c2d5eb70..e0c67735 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -21,7 +21,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` Roles required by named guard. diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 4eed2ad7..3f4320a2 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -19,17 +19,17 @@ The grpc server binding adapts `http` request-response streams to `grpc` request ### catalog -> `object` as map of named:`object` +> `object` as map of named: `array` of `object` To map defined catalog for schema retrieval based on catalog specific parameters. -#### catalog.subject\* +#### catalog[].subject\* > `string` Subject name used when storing the catalog artifact. -#### catalog.version +#### catalog[].version > `string` | Default: `latest` diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md index 78cdcc79..218eec7f 100644 --- a/src/reference/config/bindings/http-filesystem/.partials/routes.md +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -15,7 +15,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index 8b64e764..f8268c6a 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -65,7 +65,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` Roles required by named guard. @@ -106,7 +106,7 @@ Path with optional embedded parameter names, such as `/{topic}`. > `string` -Default exit binding when no conditional routes are viable. +Next binding when following this route. ```yaml routes: diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index e77c82ce..0c557386 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -3,6 +3,8 @@ > `array` of `object` + + #### requests[].content > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` @@ -19,18 +21,26 @@ A schema or type to validate the request content. Refer to the individual [model > `array` of `string` +Content type of the HTTP request. + #### requests[].headers > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` +Enforce validation for request headers. + #### requests[].method > `enum` [ `GET`, `PUT`, `POST`, `DELETE`, `OPTIONS`, `HEAD`, `PATCH`, `TRACE` ] +HTTP request method. + #### requests[].params > `object` +Query parameters of the HTTP request. + #### params.path > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` @@ -59,10 +69,14 @@ A schema or type to validate the query content. Refer to the individual [model]( > `string` +URL path of the HTTP request. + #### requests[].responses > `array` of `object` + + #### responses[].content > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` @@ -81,6 +95,8 @@ A schema or type to validate the response content. Refer to the individual [mode > `array` of `string` +Content type of the HTTP response. + #### responses[].headers > `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` @@ -104,6 +120,8 @@ A schema or type to validate the headers content. Refer to the individual [model > `integer`, `array` of `integer` +HTTP status code or codes for the response + #### options.versions > `array` of `enum` [ `http/1.1`, `h2` ] | Default: `http/1.1,h2` diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index 62a74bdb..c9d19419 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -15,7 +15,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 3fed7fcc..3d3ec313 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -133,7 +133,7 @@ Exposed response headers. #### options.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by a named guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index f8a2808d..3fc81116 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -21,7 +21,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` Roles required by named guard. @@ -81,7 +81,7 @@ Pattern matching the fully qualified name of a `grpc` service method, in the for > `string` -Default exit binding when no conditional routes are viable. +Next binding when following this route. ```yaml routes: diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index 20769df9..09b86d7c 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `kafka`-specific routes. #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md index 08506c7c..39eb4e44 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -18,7 +18,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index 4f0b6d23..3a6156cd 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `mqtt`-specific routes. #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. @@ -58,6 +58,8 @@ Array of MQTT topic names for publish capability. > `string` +The MQTT topic to match on that supports standard MQTT wildcards `/+/`, `/#`. + #### when[].subscribe > `array` of `object` @@ -68,6 +70,8 @@ Array of MQTT topic names for subscribe capability. > `string` +The MQTT topic to match on that supports standard MQTT wildcards `/+/`, `/#`. + #### routes[].exit > `string` diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index 7d5077a0..b2f6e73e 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -34,7 +34,7 @@ options: #### options.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by a named guard. diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 8f8bdc25..ee5cc8d1 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -34,7 +34,7 @@ options: #### options.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by a named guard. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index 45063d7c..c2c27558 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -29,13 +29,15 @@ OpenAPI and AsyncAPI specs definition. #### specs.openapi\* -> `object` as map of named:`object` +> `object` as map of named: `object` + +Options for each configured OpenAPI spec. #### openapi.catalog -> `object` as map of named:`object` +> `object` as map of named: `object` -catalog specific options. +Catalog specific options. #### catalog.subject\* @@ -51,11 +53,13 @@ Catalog artifact version to use. #### specs.asyncapi\* -> `object` as map of named:`object` +> `object` as map of named: `object` + +Options for each configured AsyncAPI spec. #### asyncapi.catalog -> `object` as map of named:`object` +> `object` as map of named: `object` `catalog` catalog specific options. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md index c207f308..8ccd09f3 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. @@ -40,7 +40,7 @@ OpenAPI OperationId that can be mapped between OpenAPI and AsyncAPI spec > `string` -Default exit binding when no conditional routes are viable. +Next binding when following this route. ```yaml routes: diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index 6f00a3c2..4a80ce2d 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -18,13 +18,13 @@ options: #### options.specs -> `object` as map of named:`object` +> `object` as map of named: `object` `specs` specific options #### specs.catalog -> `object` as map of named:`object` +> `object` as map of named: `object` catalog specific options. @@ -44,6 +44,8 @@ Catalog artifact version to use. > `array` of `object` +The servers to match from the schema that are used when defining endpoints. + #### servers[].url > `string` | Pattern: `^([a-zA-Z0-9\\\\.-]+)(:(\\\\{[a-zA-Z_]+\\\\}|[0-9]+))?$` @@ -58,7 +60,7 @@ http specific options. #### http.authorization -> `object` as map of named:`object` +> `object` as map of named: `object` Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -98,7 +100,7 @@ Named query parameter value pattern with `{credentials}`. > `object` -`client` specific `tcp` options. +TCP options to connect to an external client. #### tcp.host diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index e0516ed4..96bf29a5 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -16,7 +16,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. @@ -86,6 +86,8 @@ Port number. > `object` + + #### info.alpn > `string` diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md index 2c298b78..3764f3cb 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/routes.md +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -17,7 +17,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md index 4935c240..d4efe708 100644 --- a/src/reference/config/bindings/sse/.partials/routes.md +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -16,7 +16,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/tcp/.partials/routes.md b/src/reference/config/bindings/tcp/.partials/routes.md index f7d19894..0acec1da 100644 --- a/src/reference/config/bindings/tcp/.partials/routes.md +++ b/src/reference/config/bindings/tcp/.partials/routes.md @@ -1,6 +1,12 @@ +### routes + +> `array` of `object` + +Conditional `tcp`-specific routes. + #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/tcp/client.md b/src/reference/config/bindings/tcp/client.md index adcbfee1..5d2c22d1 100644 --- a/src/reference/config/bindings/tcp/client.md +++ b/src/reference/config/bindings/tcp/client.md @@ -13,13 +13,5 @@ The tcp client binding ## Configuration (\* required) - -### routes - -> `array` of `object` - -Conditional `client`-specific routes. - - diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md index f25b580e..cb298b23 100644 --- a/src/reference/config/bindings/tcp/server.md +++ b/src/reference/config/bindings/tcp/server.md @@ -13,13 +13,6 @@ The tcp server binding ## Configuration (\* required) - -### routes - -> `array` of `object` - -Conditional `server`-specific routes. - #### routes[].exit diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index 93cb4635..4e3b5ae6 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -13,7 +13,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index 80a5be35..b2c39d1d 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -13,7 +13,7 @@ routes: #### routes[].guarded -> `object` as map of named:`array` of `string` +> `object` as map of named: `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/catalogs/.partials/options-schema-registry.md b/src/reference/config/catalogs/.partials/options-schema-registry.md index dce0b7a1..ad5f4c75 100644 --- a/src/reference/config/catalogs/.partials/options-schema-registry.md +++ b/src/reference/config/catalogs/.partials/options-schema-registry.md @@ -2,6 +2,8 @@ > `object` +The `schema-registry`-specific options. + #### options.url > `string` diff --git a/src/reference/config/catalogs/apicurio-registry.md b/src/reference/config/catalogs/apicurio-registry.md index 854a5dea..44b49c50 100644 --- a/src/reference/config/catalogs/apicurio-registry.md +++ b/src/reference/config/catalogs/apicurio-registry.md @@ -28,6 +28,8 @@ catalog: > `object` +The `apicurio-registry`-specific options. + #### options.url > `string` diff --git a/src/reference/config/catalogs/aws-glue.md b/src/reference/config/catalogs/aws-glue.md index 14e7eda5..8626ba69 100644 --- a/src/reference/config/catalogs/aws-glue.md +++ b/src/reference/config/catalogs/aws-glue.md @@ -29,6 +29,8 @@ catalog: > `object` +The `aws-glue`-specific options. + #### options.registry\* > `string` diff --git a/src/reference/config/catalogs/filesystem.md b/src/reference/config/catalogs/filesystem.md index 277a7702..d27cdb04 100644 --- a/src/reference/config/catalogs/filesystem.md +++ b/src/reference/config/catalogs/filesystem.md @@ -25,9 +25,11 @@ catalogs: > `object` +The `filesystem`-specific options. + #### options.subjects -> `object` as map of named:`object` +> `object` as map of named: `object` Unique identifier for artifact categorization in the catalog. diff --git a/src/reference/config/catalogs/inline.md b/src/reference/config/catalogs/inline.md index 0a502a4c..e20ec208 100644 --- a/src/reference/config/catalogs/inline.md +++ b/src/reference/config/catalogs/inline.md @@ -39,9 +39,11 @@ catalog: > `object` +The `inline`-specific options. + #### options.subjects -> `object` as map of named:`object` +> `object` as map of named: `object` Unique identifier for schema categorization in the registry. diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index 841b3bdf..9d8e5f03 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -1,6 +1,6 @@ ### catalog\* -> `object` as map of named:`array` +> `object` as map of named: `array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. diff --git a/src/reference/config/models/.partials/integer.md b/src/reference/config/models/.partials/integer.md index d1202c4f..250a981e 100644 --- a/src/reference/config/models/.partials/integer.md +++ b/src/reference/config/models/.partials/integer.md @@ -2,10 +2,16 @@ > `enum` [ `binary`, `text` ] | Default: `text` +The format for the integer. + ### multiple > `integer` + + ### range > `string` | Pattern: `((?:\\(|\\[))(-?\\d+)?,(-?\\d+)?((?:\\)|\\]))` + +An allowed range of values for the integer. diff --git a/src/reference/config/models/.partials/number.md b/src/reference/config/models/.partials/number.md index 5eba4b16..16b74ae1 100644 --- a/src/reference/config/models/.partials/number.md +++ b/src/reference/config/models/.partials/number.md @@ -2,10 +2,16 @@ > `enum` [ `binary`, `text` ] | Default: `text` +The format for the number. + ### multiple > `number` + + ### range > `string` | Pattern: `((?:\\(|\\[))(-?\\d+(?:\\.\\d+)?)?,(-?\\d+(?:\\.\\d+)?)?((?:\\)|\\]))` + +An allowed range of values for the number. diff --git a/src/reference/config/models/protobuf.md b/src/reference/config/models/protobuf.md index 7f969cec..22150cc0 100644 --- a/src/reference/config/models/protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -40,7 +40,7 @@ Transforms the model from this data type to the Protobuf schema on produce and t ### catalog\* -> `object` as map of named:`array` +> `object` as map of named: `array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. diff --git a/src/reference/config/telemetry/exporters/otlp.md b/src/reference/config/telemetry/exporters/otlp.md index 3fd5f43b..4281b071 100644 --- a/src/reference/config/telemetry/exporters/otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -72,14 +72,22 @@ Specifies the protocol to use for exporting data for exporting data to the [OTEL > `string` +The URI for the collector endpoint. + #### endpoint.overrides > `object` +The options for overriding the endpoint for each signal type. + #### overrides.logs -> `string` +> `string` | Default: `/v1/metrics` + +The `logs` signal endpoint URI. #### overrides.metrics -> `string` +> `string` | Default: `/v1/logs` + +The `metrics` signal endpoint URI. From bd7afc86bf0d8059bfd6a4e1bc3ea313454cb0c4 Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 10 Sep 2024 12:12:52 -0400 Subject: [PATCH 38/54] add schema check action --- .github/workflows/schema-check.yaml | 43 +++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 44 insertions(+) create mode 100644 .github/workflows/schema-check.yaml diff --git a/.github/workflows/schema-check.yaml b/.github/workflows/schema-check.yaml new file mode 100644 index 00000000..63335ec8 --- /dev/null +++ b/.github/workflows/schema-check.yaml @@ -0,0 +1,43 @@ +name: Schema Checker + +on: + push: + repository_dispatch: + workflow_dispatch: + schedule: + - cron: "0 0 * * *" + +jobs: + schemaChecker: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + run_install: true + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - name: Install deps + run: pnpm install-check-schema + + - name: Build latest schema + run: | + CONTAINER_ID=$(docker run -d --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:latest start -v -Pzilla.engine.verbose.schema.plain); + sleep 5; + docker logs $CONTAINER_ID > ./.check-schema/zilla-schema.json 2>&1; + docker stop $CONTAINER_ID; + + sed -i '1,2d' ./.check-schema/zilla-schema.json; + sed -i '$d' ./.check-schema/zilla-schema.json; + + - name: Schema Checker + run: pnpm check-schema + diff --git a/package.json b/package.json index 0318f18e..9b67329f 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "lint": "markdownlint-cli2 \"**/*.md\" \"#node_modules\" \"#.config\" \"#.check-schema\"", "lint-fix": "markdownlint-cli2 --fix \"**/*.md\" \"#node_modules\" \"#.config\" \"#.check-schema\"", "link-checker": "pnpm build && link-checker src/.vuepress/dist", + "install-check-schema": "cd ./.check-schema && pnpm install", "check-schema": "node ./.check-schema" }, "devDependencies": { From 2e0d5df365c0842f03d2ce16b9146b1e2a85f9c7 Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 10 Sep 2024 16:44:38 -0400 Subject: [PATCH 39/54] fix tls props and otlp defaults --- src/reference/config/bindings/.partials/options-tls.md | 6 +++--- src/reference/config/bindings/tls/.partials/options.md | 6 +++--- src/reference/config/telemetry/exporters/otlp.md | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/reference/config/bindings/.partials/options-tls.md b/src/reference/config/bindings/.partials/options-tls.md index b29812d2..09c942e2 100644 --- a/src/reference/config/bindings/.partials/options-tls.md +++ b/src/reference/config/bindings/.partials/options-tls.md @@ -26,7 +26,7 @@ A list of reference names for the Vault signer certificate. > `boolean` -Trust CA certificates. This property will be considered set to `true` when [tls.trust](#tls-trust) is `null`. +Trust CA certificates. When the this property is not explicitly set it will be automatically set to `true` if [tls.trust](#tls-trust) is `null`. #### tls.sni @@ -42,6 +42,6 @@ Application protocols. #### tls.mutual -> `enum` [ `required`, `requested`, `none` ] | Default: `none` +> `enum` [ `required`, `requested`, `none` ] -Mutual authentication. +Mutual authentication. When the this property is not explicitly set it will be automatically set to `none` if [tls.trust](#tls-trust) is `null`, otherwise it will be set to `required`. diff --git a/src/reference/config/bindings/tls/.partials/options.md b/src/reference/config/bindings/tls/.partials/options.md index ebffa021..1c3c4317 100644 --- a/src/reference/config/bindings/tls/.partials/options.md +++ b/src/reference/config/bindings/tls/.partials/options.md @@ -42,7 +42,7 @@ A list of reference names for the Vault signer certificate. > `boolean` -Trust CA certificates. This property will be considered set to `true` when [options.trust](#options-trust) is `null`. +Trust CA certificates. When the this property is not explicitly set it will be automatically set to `true` if [options.trust](#options-trust) is `null`. #### options.sni @@ -58,6 +58,6 @@ Application protocols. #### options.mutual -> `enum` [ `required`, `requested`, `none` ] | Default: `none` +> `enum` [ `required`, `requested`, `none` ] -Mutual authentication +Mutual authentication. When the this property is not explicitly set it will be automatically set to `none` if [options.trust](#options-trust) is `null`, otherwise it will be set to `required`. diff --git a/src/reference/config/telemetry/exporters/otlp.md b/src/reference/config/telemetry/exporters/otlp.md index 4281b071..d136d852 100644 --- a/src/reference/config/telemetry/exporters/otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -82,12 +82,12 @@ The options for overriding the endpoint for each signal type. #### overrides.logs -> `string` | Default: `/v1/metrics` +> `string` | Default: `/v1/logs` The `logs` signal endpoint URI. #### overrides.metrics -> `string` | Default: `/v1/logs` +> `string` | Default: `/v1/metrics` The `metrics` signal endpoint URI. From e7a100047e0f7c0ac2be34d780864570f98ce079 Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 10 Sep 2024 17:33:07 -0400 Subject: [PATCH 40/54] check for global kind proper --- .check-schema/index.js | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index 1feeb166..d6e8cf1b 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -226,14 +226,44 @@ const main = async () => { ).flat(1); var bindings = schema.properties.bindings.patternProperties[Object.keys(schema.properties.bindings.patternProperties)[0]]; + var kindsGlobalIs = bindings.anyOf?.filter(({properties}) => (properties?.kind?.const)) + .reduce((o, a) => { + // eslint-disable-next-line no-unused-vars + const {kind:_, ...properties} = a.properties; + return { + ...o, + [a.properties?.kind?.const]: {...a, properties} + }; + }, {}) + var kindsGlobalNot = bindings.anyOf?.filter(({properties}) => (properties?.kind?.not?.const)) + .reduce((o, a) => { + // eslint-disable-next-line no-unused-vars + const {kind:_, ...properties} = a.properties; + return { + ...o, + [a.properties?.kind?.not.const]: {}, + all: {...o.all, ...a, properties} + }; + }, {all: {}}); bindings.allOf?.forEach(({ if: fi, then }) => { var folder = `bindings.${fi.properties.type.const}`; + var globals = { + properties: { + ...(kindsGlobalIs[fi.properties.type.const]?.properties || {}), + ...(kindsGlobalNot[fi.properties.type.const]?.properties || kindsGlobalNot.all?.properties || {}), + }, + required: [ + ...(kindsGlobalIs[fi.properties.type.const]?.required || []), + ...(kindsGlobalNot[fi.properties.type.const]?.required || kindsGlobalNot.all?.required || []), + ], + } if (then.oneOf) { sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf, allOf }) => ({ folder, name: properties.kind.const, props: { ...bindings.properties, + ...globals.properties, ...(then.properties || {}), ...(properties || {}), options: getOptions(properties.kind.const, then, properties), @@ -242,7 +272,7 @@ const main = async () => { anyOf: [...(then.anyOf || []), ...(anyOf || [])], oneOf: [...(then.oneOf || []), ...(oneOf || [])], }, - required: getRequired(properties.kind.const, then, required), + required: getRequired(properties.kind.const, then, [...(globals.required || []), ...(required || [])]), }))); } else { sections.push({ @@ -250,6 +280,7 @@ const main = async () => { name: then.properties.kind.enum[0], props: { ...bindings.properties, + ...globals.properties, ...(then.properties || {}), options: getOptions(then.properties.kind.enum[0], bindings, then.properties), routes: getRoutes(then.properties.kind.enum[0], bindings, then), @@ -257,7 +288,7 @@ const main = async () => { anyOf: [...(then.anyOf || [])], oneOf: [...(then.oneOf || [])], }, - required: [...(then.required || [])], + required: [...(globals.required || []), ...(then.required || [])], }); } }) From 8b5938d41400e758aa0a17f6d5689365566d1e8a Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 10 Sep 2024 17:45:50 -0400 Subject: [PATCH 41/54] update schema from develop --- .check-schema/README.md | 14 ++- .check-schema/zilla-schema.json | 98 +++++++++++----- src/.vuepress/public/assets/zilla-schema.json | 110 ++++++++++++------ .../config/bindings/http/.partials/routes.md | 27 +++++ src/reference/config/bindings/http/server.md | 2 +- 5 files changed, 182 insertions(+), 69 deletions(-) diff --git a/.check-schema/README.md b/.check-schema/README.md index 9fb441c3..b46ba7cc 100644 --- a/.check-schema/README.md +++ b/.check-schema/README.md @@ -7,8 +7,18 @@ This project compares the JSON Schema from the Zilla to the [Reference](../src/r In the repository root directory run: ```bash -docker run --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:develop-SNAPSHOT start -v -Pzilla.engine.verbose.schema.plain > ./.check-schema/zilla-schema.json -docker run --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:develop-SNAPSHOT start -v -Pzilla.engine.verbose.schema > ./src/.vuepress/public/assets/zilla-schema.json +brew install gsed +``` + +```bash +CONTAINER_ID=$(docker run -d --rm -e ZILLA_INCUBATOR_ENABLED=true ghcr.io/aklivity/zilla:develop-SNAPSHOT start -v -Pzilla.engine.verbose.schema.plain); +sleep 5; +docker logs $CONTAINER_ID > ./.check-schema/zilla-schema.json 2>&1; +docker stop $CONTAINER_ID; + +gsed -i '1,2d' ./.check-schema/zilla-schema.json; +gsed -i '$d' ./.check-schema/zilla-schema.json; + ``` Once the docker container has printed "started" it must be deleted for the command to complete. diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 107638a2..a81ac8c5 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -363,10 +363,12 @@ "type": "object", "properties": { "metrics": { - "type": "string" + "type": "string", + "default": "/v1/metrics" }, "logs": { - "type": "string" + "type": "string", + "default": "/v1/logs" } } } @@ -1011,7 +1013,7 @@ } }, "tcp": { - "title": "tcp Options", + "title": "Options", "type": "object", "properties": { "host": { @@ -1048,7 +1050,7 @@ "additionalProperties": false }, "tls": { - "title": "tls Options", + "title": "Options", "type": "object", "properties": { "version": { @@ -1084,7 +1086,10 @@ "title": "Application Protocols", "type": "array", "items": { - "type": "string" + "type": [ + "string", + "null" + ] } }, "mutual": { @@ -1094,8 +1099,7 @@ "required", "requested", "none" - ], - "default": "none" + ] }, "signers": { "title": "Vault Signer Certificates", @@ -1105,6 +1109,20 @@ } } }, + "not": { + "allOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] + }, "additionalProperties": false } }, @@ -1251,6 +1269,28 @@ "type", "kind" ], + "anyOf": [ + { + "properties": { + "kind": { + "const": "remote_server" + } + }, + "required": [ + "entry" + ] + }, + { + "properties": { + "kind": { + "not": { + "const": "remote_server" + } + }, + "entry": false + } + } + ], "allOf": [ { "if": { @@ -1270,7 +1310,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -1343,7 +1382,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "options": { "properties": { @@ -1606,7 +1644,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -1633,7 +1670,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -1671,7 +1707,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -1854,7 +1889,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -2086,7 +2120,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -2117,7 +2150,8 @@ "enum": [ "same-origin", "cross-origin" - ] + ], + "default": "same-origin" } }, "oneOf": [ @@ -2365,7 +2399,25 @@ "additionalProperties": false } }, - "with": false + "with": { + "properties": { + "headers": { + "title": "Headers", + "type": "object", + "properties": { + "overrides": { + "title": "Overrides", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } } } } @@ -2424,7 +2476,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -2496,7 +2547,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -2734,7 +2784,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "routes": { @@ -3037,7 +3086,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "routes": { @@ -3202,7 +3250,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -3373,7 +3420,6 @@ "server" ] }, - "entry": false, "catalog": false, "options": { "properties": { @@ -3492,7 +3538,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -3656,7 +3701,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -3690,7 +3734,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -3842,7 +3885,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -3934,7 +3976,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -4041,7 +4082,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -4168,7 +4208,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "routes": { "title": "Routes", @@ -4318,7 +4357,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "routes": { diff --git a/src/.vuepress/public/assets/zilla-schema.json b/src/.vuepress/public/assets/zilla-schema.json index 0fd7ef04..82e8fbf3 100644 --- a/src/.vuepress/public/assets/zilla-schema.json +++ b/src/.vuepress/public/assets/zilla-schema.json @@ -538,7 +538,8 @@ { "$ref": "#/$defs/expression" } - ] + ], + "default": "/v1/metrics" }, "logs": { "anyOf": [ @@ -548,7 +549,8 @@ { "$ref": "#/$defs/expression" } - ] + ], + "default": "/v1/logs" } } } @@ -1445,7 +1447,7 @@ } }, "tcp": { - "title": "tcp Options", + "title": "Options", "type": "object", "properties": { "host": { @@ -1511,7 +1513,7 @@ "additionalProperties": false }, "tls": { - "title": "tls Options", + "title": "Options", "type": "object", "properties": { "version": { @@ -1582,13 +1584,9 @@ "title": "Application Protocols", "type": "array", "items": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } + "type": [ + "string", + "null" ] } }, @@ -1606,8 +1604,7 @@ { "$ref": "#/$defs/expression" } - ], - "default": "none" + ] }, "signers": { "title": "Vault Signer Certificates", @@ -1624,6 +1621,20 @@ } } }, + "not": { + "allOf": [ + { + "required": [ + "keys" + ] + }, + { + "required": [ + "signers" + ] + } + ] + }, "additionalProperties": false } }, @@ -1833,6 +1844,28 @@ "type", "kind" ], + "anyOf": [ + { + "properties": { + "kind": { + "const": "remote_server" + } + }, + "required": [ + "entry" + ] + }, + { + "properties": { + "kind": { + "not": { + "const": "remote_server" + } + }, + "entry": false + } + } + ], "allOf": [ { "if": { @@ -1852,7 +1885,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -1939,7 +1971,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "options": { "properties": { @@ -2286,7 +2317,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -2313,7 +2343,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -2351,7 +2380,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -2590,7 +2618,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -2962,7 +2989,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -3007,7 +3033,8 @@ { "$ref": "#/$defs/expression" } - ] + ], + "default": "same-origin" } }, "oneOf": [ @@ -3353,7 +3380,32 @@ "additionalProperties": false } }, - "with": false + "with": { + "properties": { + "headers": { + "title": "Headers", + "type": "object", + "properties": { + "overrides": { + "title": "Overrides", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } } } } @@ -3412,7 +3464,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -3498,7 +3549,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -3869,7 +3919,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "routes": { @@ -4305,7 +4354,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "routes": { @@ -4505,7 +4553,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -4739,7 +4786,6 @@ "server" ] }, - "entry": false, "catalog": false, "options": { "properties": { @@ -4879,7 +4925,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -5099,7 +5144,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -5133,7 +5177,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -5390,7 +5433,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -5503,7 +5545,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "vault": false, "options": false, @@ -5645,7 +5686,6 @@ "client" ] }, - "entry": false, "catalog": false, "vault": false, "options": { @@ -5808,7 +5848,6 @@ "proxy" ] }, - "entry": false, "catalog": false, "routes": { "title": "Routes", @@ -5994,7 +6033,6 @@ "server" ] }, - "entry": false, "catalog": false, "vault": false, "routes": { diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index c9d19419..c7e7c75d 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -47,6 +47,33 @@ routes: Header name value pairs (all match). +#### routes[].with + +> `object` + +HTTP parameters for matched route when `http` streams. + +```yaml +routes: + - with: + headers: + overrides: + ":scheme": https + ":authority": example.com:443 +``` + +#### with.headers + +> `object` + +Options for headers when adapting a route. + +#### headers.overrides + +> `object` as map of named: `string` properties + +HTTP header name value pairs overrides. + #### routes[].exit > `string` diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 3d3ec313..41250ee6 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -47,7 +47,7 @@ Defines the [same-origin](#access-control-policy-same-origin) or [cross-origin]( #### access-control.policy -> `enum` [ `same-origin`, `cross-origin` ] +> `enum` [ `same-origin`, `cross-origin` ] | Default: `same-origin` Supported access control policies. From 68ab4822e7d4d6c0ad604282101e6d9e6e71955d Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 10 Sep 2024 17:46:06 -0400 Subject: [PATCH 42/54] chore: update action versions --- .github/workflows/build-deploy-docs.yml | 2 +- .github/workflows/gitflow-release.yaml | 2 +- .github/workflows/links-build.yml | 2 +- .github/workflows/links-push.yml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml index 049f1de7..ae8cddb6 100644 --- a/.github/workflows/build-deploy-docs.yml +++ b/.github/workflows/build-deploy-docs.yml @@ -25,7 +25,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Restore cached Docs id: dist-cache diff --git a/.github/workflows/gitflow-release.yaml b/.github/workflows/gitflow-release.yaml index e75d4201..0a2e7d8f 100644 --- a/.github/workflows/gitflow-release.yaml +++ b/.github/workflows/gitflow-release.yaml @@ -49,7 +49,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{secrets.GITFLOW_RELEASES_TOKEN}} fetch-depth: "0" diff --git a/.github/workflows/links-build.yml b/.github/workflows/links-build.yml index aa6ac6b4..30e67630 100644 --- a/.github/workflows/links-build.yml +++ b/.github/workflows/links-build.yml @@ -7,7 +7,7 @@ jobs: linkChecker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 diff --git a/.github/workflows/links-push.yml b/.github/workflows/links-push.yml index 75e51ff8..2f0fc864 100644 --- a/.github/workflows/links-push.yml +++ b/.github/workflows/links-push.yml @@ -7,8 +7,8 @@ jobs: linkChecker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - + - uses: actions/checkout@v4 + - name: Link Checker uses: lycheeverse/lychee-action@v1.8.0 with: From e58fe2c4651d025ad97565d38cee4b639185d4f6 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 11 Sep 2024 09:48:11 -0400 Subject: [PATCH 43/54] update catalog --- .check-schema/zilla-schema.json | 44 ++++++------------- .../config/bindings/.partials/cataloged.md | 4 +- src/reference/config/bindings/grpc/server.md | 14 ++++-- 3 files changed, 26 insertions(+), 36 deletions(-) diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index a81ac8c5..8b7358da 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -693,7 +693,10 @@ "type": "object", "properties": { "strategy": { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, "version": { "type": "string", @@ -1158,7 +1161,16 @@ }, "catalog": { "title": "Catalog", - "type": "object" + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "$ref": "#/$defs/cataloged" + } + } + }, + "maxProperties": 1 }, "type": { "title": "Type", @@ -1815,7 +1827,6 @@ "kind": { "const": "server" }, - "entry": false, "options": { "properties": { "services": { @@ -1829,32 +1840,6 @@ } }, "additionalProperties": false - }, - "catalog": { - "title": "Catalog", - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "type": "object", - "properties": { - "subject": { - "type": "string" - }, - "version": { - "type": "string", - "default": "latest" - } - }, - "required": [ - "subject" - ], - "additionalProperties": false - } - } - }, - "maxProperties": 1 } } }, @@ -1863,7 +1848,6 @@ "kind": { "const": "client" }, - "entry": false, "catalog": false, "options": false } diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md index 96870073..0d81b849 100644 --- a/src/reference/config/bindings/.partials/cataloged.md +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -9,7 +9,7 @@ To map defined catalog for schema retrieval based on catalog specific parameters ```yaml catalog: my_catalog: - id: unique-catalog-id + - id: unique-catalog-id ``` ----- @@ -27,7 +27,7 @@ catalog: ```yaml catalog: my_catalog: - subject: http + - subject: http ``` #### catalog.strategy\* diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 3f4320a2..a75f52da 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -19,17 +19,23 @@ The grpc server binding adapts `http` request-response streams to `grpc` request ### catalog -> `object` as map of named: `array` of `object` +> `object` as map of named: `array` To map defined catalog for schema retrieval based on catalog specific parameters. -#### catalog[].subject\* +```yaml +catalog: + my_catalog: + - subject: http +``` + +#### catalog.subject\* > `string` -Subject name used when storing the catalog artifact. +Unique identifier for schema categorization in the catalog. -#### catalog[].version +#### catalog.version > `string` | Default: `latest` From 4c560cb8bc3410e82310e36300887d2303c65b6e Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 11 Sep 2024 10:04:41 -0400 Subject: [PATCH 44/54] fix catalog array --- .check-schema/index.js | 2 +- src/reference/config/bindings/.partials/cataloged.md | 8 ++++---- src/reference/config/bindings/grpc/server.md | 4 ++-- src/reference/config/models/.partials/cataloged.md | 8 ++++---- src/reference/config/models/protobuf.md | 10 +++++----- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index d6e8cf1b..b55a9198 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -140,7 +140,7 @@ const main = async () => { ); i.items?.oneOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => - props.push(...getObjProps(`${k}`, properties, required)) + props.push(...getObjProps(`${k}[]`, properties, required)) ); i.oneOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md index 0d81b849..990d6f3c 100644 --- a/src/reference/config/bindings/.partials/cataloged.md +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -30,25 +30,25 @@ catalog: - subject: http ``` -#### catalog.strategy\* +#### catalog[].strategy\* > `enum` [ `topic` ] To determine the subject based on the specified strategy -#### catalog.subject\* +#### catalog[].subject\* > `string` Unique identifier for schema categorization in the catalog. -#### catalog.version +#### catalog[].version > `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. -#### catalog.id\* +#### catalog[].id\* > `integer` diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index a75f52da..3dad7533 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -29,13 +29,13 @@ catalog: - subject: http ``` -#### catalog.subject\* +#### catalog[].subject\* > `string` Unique identifier for schema categorization in the catalog. -#### catalog.version +#### catalog[].version > `string` | Default: `latest` diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index 9d8e5f03..974dd279 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -12,25 +12,25 @@ To map defined catalog for schema retrieval based on catalog specific parameters > `subject` > `version` -#### catalog.id\* +#### catalog[].id\* > `integer` Define specific schema id to refer from catalog. -#### catalog.version +#### catalog[].version > `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. -#### catalog.strategy\* +#### catalog[].strategy\* > `enum` [ `topic` ] To determine the subject based on the specified strategy -#### catalog.subject\* +#### catalog[].subject\* > `string` diff --git a/src/reference/config/models/protobuf.md b/src/reference/config/models/protobuf.md index 22150cc0..931a10a8 100644 --- a/src/reference/config/models/protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -55,31 +55,31 @@ To map defined catalog for schema retrieval based on catalog specific parameters > `version` > `record` -#### catalog.id\* +#### catalog[].id\* > `integer` Define specific schema id to refer from catalog. -#### catalog.version +#### catalog[].version > `string` | Default: `latest` Specific iteration or version of a registered schema in the defined catalog. -#### catalog.strategy\* +#### catalog[].strategy\* > `enum` [ `topic` ] To determine the subject based on the specified strategy -#### catalog.subject\* +#### catalog[].subject\* > `string` Unique identifier for schema categorization in the catalog. -#### catalog.record\* +#### catalog[].record\* > `string` From dab9d7eaf3bde078bd1348cf1d8acc261e8fc5e6 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 11 Sep 2024 10:07:42 -0400 Subject: [PATCH 45/54] format --- .check-schema/index.js | 54 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index b55a9198..aa43c363 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -28,9 +28,9 @@ const main = async () => { return type; } - function getOptions(name, parent, childProps){ - var anyOfProps = parent.anyOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); - var oneOfProps = parent.oneOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.options)).map(({properties}) => (properties?.options?.properties)); + function getOptions(name, parent, childProps) { + var anyOfProps = parent.anyOf?.filter(({ properties }) => ((properties?.kind.const) === name && properties?.options)).map(({ properties }) => (properties?.options?.properties)); + var oneOfProps = parent.oneOf?.filter(({ properties }) => ((properties?.kind.const) === name && properties?.options)).map(({ properties }) => (properties?.options?.properties)); return (childProps?.options !== false && parent?.properties?.options !== false ? { ...parent?.properties?.options, ...childProps?.options, @@ -43,9 +43,9 @@ const main = async () => { } : {}); } - function getRoutes(name, root, parent, childProps){ - var anyOfProps = parent.anyOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.routes)).map(({properties}) => (properties?.routes?.items?.properties)); - var oneOfProps = parent.oneOf?.filter(({properties}) => ((properties?.kind.const) === name && properties?.routes)).map(({properties}) => (properties?.routes?.items?.properties)); + function getRoutes(name, root, parent, childProps) { + var anyOfProps = parent.anyOf?.filter(({ properties }) => ((properties?.kind.const) === name && properties?.routes)).map(({ properties }) => (properties?.routes?.items?.properties)); + var oneOfProps = parent.oneOf?.filter(({ properties }) => ((properties?.kind.const) === name && properties?.routes)).map(({ properties }) => (properties?.routes?.items?.properties)); return (parent?.properties?.routes !== false ? { ...parent?.properties?.routes, items: { @@ -61,9 +61,9 @@ const main = async () => { } : {}); } - function getRequired(name, parent, childRequired){ + function getRequired(name, parent, childRequired) { return [ - ...(parent?.anyOf?.reduce(({required:r1}, {required:r2}) => ([...(r1 || []), ...(r2 || [])]), []) || []), + ...(parent?.anyOf?.reduce(({ required: r1 }, { required: r2 }) => ([...(r1 || []), ...(r2 || [])]), []) || []), ...(parent?.required || []), ...(childRequired || []) ]; @@ -111,8 +111,8 @@ const main = async () => { if (!i || !!i.deprecated) return // spread extra props - i = i.anyOf?.reduce((a, b) => ({...a, ...b}), i) || i; - i = i.allOf?.reduce((a, b) => ({...a, ...b}), i) || i; + i = i.anyOf?.reduce((a, b) => ({ ...a, ...b }), i) || i; + i = i.allOf?.reduce((a, b) => ({ ...a, ...b }), i) || i; // console.log(k, JSON.stringify(i)); //recurse @@ -226,25 +226,25 @@ const main = async () => { ).flat(1); var bindings = schema.properties.bindings.patternProperties[Object.keys(schema.properties.bindings.patternProperties)[0]]; - var kindsGlobalIs = bindings.anyOf?.filter(({properties}) => (properties?.kind?.const)) - .reduce((o, a) => { - // eslint-disable-next-line no-unused-vars - const {kind:_, ...properties} = a.properties; - return { - ...o, - [a.properties?.kind?.const]: {...a, properties} + var kindsGlobalIs = bindings.anyOf?.filter(({ properties }) => (properties?.kind?.const)) + .reduce((o, a) => { + // eslint-disable-next-line no-unused-vars + const { kind: _, ...properties } = a.properties; + return { + ...o, + [a.properties?.kind?.const]: { ...a, properties } }; - }, {}) - var kindsGlobalNot = bindings.anyOf?.filter(({properties}) => (properties?.kind?.not?.const)) - .reduce((o, a) => { - // eslint-disable-next-line no-unused-vars - const {kind:_, ...properties} = a.properties; - return { - ...o, - [a.properties?.kind?.not.const]: {}, - all: {...o.all, ...a, properties} + }, {}) + var kindsGlobalNot = bindings.anyOf?.filter(({ properties }) => (properties?.kind?.not?.const)) + .reduce((o, a) => { + // eslint-disable-next-line no-unused-vars + const { kind: _, ...properties } = a.properties; + return { + ...o, + [a.properties?.kind?.not.const]: {}, + all: { ...o.all, ...a, properties } }; - }, {all: {}}); + }, { all: {} }); bindings.allOf?.forEach(({ if: fi, then }) => { var folder = `bindings.${fi.properties.type.const}`; var globals = { From a9246ad27be1b948d68a088b95cee85f3b13a470 Mon Sep 17 00:00:00 2001 From: AJ Date: Fri, 13 Sep 2024 16:35:38 -0400 Subject: [PATCH 46/54] remove defautl hystorical --- .check-schema/zilla-schema.json | 90 ++++++++++++++----- .../config/bindings/asyncapi/client.md | 2 +- .../config/bindings/asyncapi/proxy.md | 2 +- .../config/bindings/asyncapi/server.md | 2 +- .../config/bindings/kafka/cache_server.md | 2 +- 5 files changed, 72 insertions(+), 26 deletions(-) diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 8b7358da..86d72576 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -734,7 +734,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Guard", + "title": "Authorization", "type": "object", "properties": { "credentials": { @@ -909,8 +909,7 @@ "enum": [ "live", "historical" - ], - "default": "historical" + ] }, "deltaType": { "type": "string", @@ -923,26 +922,76 @@ "transforms": { "title": "Transforms", "type": "array", - "items": [ + "oneOf": [ { - "type": "object", - "additionalProperties": false, - "properties": { - "extract-headers": { + "minItems": 2, + "maxItems": 2, + "items": [ + { "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "additionalProperties": false, + "properties": { + "extract-key": { "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + "additionalProperties": false } - }, - "additionalProperties": false + } }, - "extract-key": { - "type": "string", - "additionalProperties": false + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + } + }, + "additionalProperties": false + } + } } - } + ] + }, + { + "minItems": 1, + "maxItems": 1, + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + } + }, + "additionalProperties": false + } + } + } + ] + }, + { + "minItems": 1, + "maxItems": 1, + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-key": { + "type": "string", + "additionalProperties": false + } + } + } + ] } ] }, @@ -962,7 +1011,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Guard", + "title": "Authorization", "type": "object", "properties": { "credentials": { @@ -1089,10 +1138,7 @@ "title": "Application Protocols", "type": "array", "items": { - "type": [ - "string", - "null" - ] + "type": "string" } }, "mutual": { diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 21c0fdc3..053b65fe 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -49,7 +49,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ `live`, `historical` ] | Default: `historical` +> `enum` [ `live`, `historical` ] Fetch offset to use for new consumers diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index a4d2dbea..482e8668 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -49,7 +49,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ `live`, `historical` ] | Default: `historical` +> `enum` [ `live`, `historical` ] Fetch offset to use for new consumers diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index dbb69bdf..9d4b5738 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -49,7 +49,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ `live`, `historical` ] | Default: `historical` +> `enum` [ `live`, `historical` ] Fetch offset to use for new consumers diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index 3775fd26..ae4a26a5 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -44,7 +44,7 @@ Topic configuration. #### topics[].defaultOffset -> `enum` [ `live`, `historical` ] | Default: `historical` +> `enum` [ `live`, `historical` ] Fetch offset to use for new consumers From 663d160d1f647c13fc75152f822f233e3c7c14aa Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 17 Sep 2024 11:40:09 -0400 Subject: [PATCH 47/54] update object map naming --- .check-schema/index.js | 18 +- .github/contributing/writing-guide.md | 8 +- src/.vuepress/public/assets/zilla-schema.json | 167 +++++++++++------- .../config/bindings/.partials/cataloged.md | 2 +- .../bindings/.partials/options-http-auth.md | 6 +- .../config/bindings/amqp/.partials/routes.md | 2 +- .../bindings/asyncapi/.partials/options.md | 12 +- .../bindings/asyncapi/.partials/routes.md | 2 +- .../config/bindings/asyncapi/client.md | 16 +- .../config/bindings/asyncapi/proxy.md | 4 +- .../config/bindings/asyncapi/server.md | 4 +- .../bindings/grpc-kafka/.partials/routes.md | 8 +- .../config/bindings/grpc/.partials/routes.md | 4 +- src/reference/config/bindings/grpc/server.md | 2 +- .../http-filesystem/.partials/routes.md | 2 +- .../bindings/http-kafka/.partials/routes.md | 8 +- .../config/bindings/http/.partials/options.md | 6 +- .../config/bindings/http/.partials/routes.md | 6 +- src/reference/config/bindings/http/server.md | 2 +- .../bindings/kafka-grpc/.partials/routes.md | 4 +- .../config/bindings/kafka/.partials/routes.md | 2 +- .../bindings/mqtt-kafka/.partials/routes.md | 2 +- .../config/bindings/mqtt/.partials/routes.md | 2 +- src/reference/config/bindings/mqtt/client.md | 2 +- src/reference/config/bindings/mqtt/server.md | 2 +- .../openapi-asyncapi/.partials/options.md | 8 +- .../openapi-asyncapi/.partials/routes.md | 2 +- .../bindings/openapi/.partials/options.md | 12 +- .../config/bindings/proxy/.partials/routes.md | 2 +- .../bindings/sse-kafka/.partials/routes.md | 4 +- .../config/bindings/sse/.partials/routes.md | 2 +- .../config/bindings/tcp/.partials/routes.md | 2 +- .../config/bindings/tls/.partials/routes.md | 2 +- .../config/bindings/ws/.partials/routes.md | 2 +- src/reference/config/catalogs/filesystem.md | 2 +- src/reference/config/catalogs/inline.md | 2 +- .../config/models/.partials/cataloged.md | 2 +- .../config/models/.partials/integer.md | 2 +- .../config/models/.partials/number.md | 2 +- src/reference/config/models/protobuf.md | 2 +- src/reference/config/overview.md | 10 +- 41 files changed, 198 insertions(+), 153 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index aa43c363..0df54b0c 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -5,6 +5,8 @@ const { marked } = require("marked"); const { $RefParser } = require("@apidevtools/json-schema-ref-parser"); const schema = require("./zilla-schema.json"); +const OBJECT_MAP_TYPE = "`object` as map of named "; + const main = async () => { await $RefParser.dereference(schema); // console.log("RefParser", JSON.stringify(schema)) @@ -19,12 +21,13 @@ const main = async () => { }; } - function getType(i) { + function getType(i, patternProperties) { // console.log(i); - var type = "`" + (i.type || "object") + "`"; + var type = "`" + (i.type || "object") + "`" + (patternProperties ? " properties" : ""); if (i.enum) type = "`enum`" + ` [ ${i.enum.map((e) => ("`" + e + "`")).join(", ")} ]`; if (i.items?.enum) type = `${"`array`"}${i.items.enum ? " of `enum`" + ` [ ${i.items.enum.map((e) => ("`" + e + "`")).join(", ")} ]` : ""}`; else if (i.items) type = `${"`array`"}${(i.items.type ? " of `" + (i.items.type) + "`" : "")}`; + if (patternProperties) type = OBJECT_MAP_TYPE + type; return type; } @@ -155,8 +158,7 @@ const main = async () => { if (!i) return var req = !!reqKeys?.includes(k); var path = [attr, k].filter((s) => !!s).join("."); - var type = getType(i); - if (patternProperties) type = "`object` as map of named: " + type; + var type = getType(i, patternProperties); if (i.properties && Object.keys(i.properties).length) { props.push([path, req, type, getExtraProps(i)]); @@ -165,14 +167,14 @@ const main = async () => { props.push([ path, req, - "`object` as map of named: " + i.additionalProperties.oneOf - .map(getType) + OBJECT_MAP_TYPE + i.additionalProperties.oneOf + .map((p) => (getType(p, patternProperties))) .join(" or ") + " properties" , getExtraProps(i) ]); } else { - type = "`object` as map of named: `" + i.additionalProperties.type + "` properties"; + type = OBJECT_MAP_TYPE + "`" + i.additionalProperties.type + "` properties"; props.push([path, req, type, getExtraProps(i)]); } } else if (i.items) { @@ -192,7 +194,7 @@ const main = async () => { path, req, i.oneOf - .map(getType) + .map((p) => (getType(p, patternProperties))) .filter((value, index, array) => array.indexOf(value) === index ) diff --git a/.github/contributing/writing-guide.md b/.github/contributing/writing-guide.md index 52083d4f..f32f9aa9 100644 --- a/.github/contributing/writing-guide.md +++ b/.github/contributing/writing-guide.md @@ -66,13 +66,13 @@ Your users need reference material because they need truth and certainty - firm Links to other md files should use the local files path reference to the new document in order for any file render to correctly add links. -- `[grpc-kafka](../path/to/bindings/grpc-kafka/README.md)` +- `[grpc-kafka](../path/to/bindings/binding-grpc-kafka.md)` When referencing specific attributes of the Zilla api always use and highlight the syntactically correct words found in the reference docs or config. Add any extra descriptive words before or after. -- `[grpc-kafka](../path/to/bindings/grpc-kafka/README.md) Binding` -- `[jwt](../path/to/guards/jwt.md) Guard` -- `[produce capability](../path/to/bindings/grpc-kafka/proxy.md#produce-capability)` +- `[grpc-kafka](../path/to/bindings/binding-grpc-kafka.md) Binding` +- `[jwt](../path/to/guards/guard-jwt.md) Guard` +- `[produce capability](../path/to/bindings/binding-grpc-kafka.md#produce-capability)` [Reference-style links](https://www.markdownguide.org/basic-syntax/#reference-style-links) should only be used to clarify reading the raw text document when it is needed. This should be used in lists, tables, or complicated paragraphs. When used the reference definition should be placed in a group with other references and as close the usage as makes sense. Exact highlighted context should be used unless there is a case when reuse of the same link is needed in the same section. diff --git a/src/.vuepress/public/assets/zilla-schema.json b/src/.vuepress/public/assets/zilla-schema.json index 82e8fbf3..6c6d3bbe 100644 --- a/src/.vuepress/public/assets/zilla-schema.json +++ b/src/.vuepress/public/assets/zilla-schema.json @@ -968,7 +968,10 @@ "strategy": { "anyOf": [ { - "type": "string" + "type": "string", + "enum": [ + "topic" + ] }, { "$ref": "#/$defs/expression" @@ -1032,7 +1035,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Guard", + "title": "Authorization", "type": "object", "properties": { "credentials": { @@ -1305,8 +1308,7 @@ { "$ref": "#/$defs/expression" } - ], - "default": "historical" + ] }, "deltaType": { "anyOf": [ @@ -1326,40 +1328,104 @@ "transforms": { "title": "Transforms", "type": "array", - "items": [ + "oneOf": [ { - "type": "object", - "additionalProperties": false, - "properties": { - "extract-headers": { + "minItems": 2, + "maxItems": 2, + "items": [ + { "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "additionalProperties": false, + "properties": { + "extract-key": { "anyOf": [ { "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + "additionalProperties": false }, { "$ref": "#/$defs/expression" } ] } - }, - "additionalProperties": false + } }, - "extract-key": { - "anyOf": [ - { - "type": "string", + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "anyOf": [ + { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, "additionalProperties": false - }, - { - "$ref": "#/$defs/expression" } - ] + } } - } + ] + }, + { + "minItems": 1, + "maxItems": 1, + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-headers": { + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "anyOf": [ + { + "type": "string", + "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + }, + { + "$ref": "#/$defs/expression" + } + ] + } + }, + "additionalProperties": false + } + } + } + ] + }, + { + "minItems": 1, + "maxItems": 1, + "items": [ + { + "type": "object", + "additionalProperties": false, + "properties": { + "extract-key": { + "anyOf": [ + { + "type": "string", + "additionalProperties": false + }, + { + "$ref": "#/$defs/expression" + } + ] + } + } + } + ] } ] }, @@ -1379,7 +1445,7 @@ "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "title": "Guard", + "title": "Authorization", "type": "object", "properties": { "credentials": { @@ -1698,7 +1764,16 @@ }, "catalog": { "title": "Catalog", - "type": "object" + "type": "object", + "patternProperties": { + "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { + "type": "array", + "items": { + "$ref": "#/$defs/cataloged" + } + } + }, + "maxProperties": 1 }, "type": { "title": "Type", @@ -2523,7 +2598,6 @@ "kind": { "const": "server" }, - "entry": false, "options": { "properties": { "services": { @@ -2544,46 +2618,6 @@ } }, "additionalProperties": false - }, - "catalog": { - "title": "Catalog", - "type": "object", - "patternProperties": { - "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { - "type": "array", - "items": { - "type": "object", - "properties": { - "subject": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ] - }, - "version": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/$defs/expression" - } - ], - "default": "latest" - } - }, - "required": [ - "subject" - ], - "additionalProperties": false - } - } - }, - "maxProperties": 1 } } }, @@ -2592,7 +2626,6 @@ "kind": { "const": "client" }, - "entry": false, "catalog": false, "options": false } diff --git a/src/reference/config/bindings/.partials/cataloged.md b/src/reference/config/bindings/.partials/cataloged.md index 990d6f3c..823f2765 100644 --- a/src/reference/config/bindings/.partials/cataloged.md +++ b/src/reference/config/bindings/.partials/cataloged.md @@ -1,6 +1,6 @@ ### catalog -> `object` as map of named: `array` +> `object` as map of named `array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. diff --git a/src/reference/config/bindings/.partials/options-http-auth.md b/src/reference/config/bindings/.partials/options-http-auth.md index 6f396aec..240a485d 100644 --- a/src/reference/config/bindings/.partials/options-http-auth.md +++ b/src/reference/config/bindings/.partials/options-http-auth.md @@ -6,18 +6,18 @@ Defines how to extract credentials from the HTTP request. #### credentials.cookies -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named cookie value pattern with `{credentials}`. #### credentials.headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. #### credentials.query\* -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named query parameter value pattern with `{credentials}`. diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md index b8a89f8b..0f9f203b 100644 --- a/src/reference/config/bindings/amqp/.partials/routes.md +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -14,7 +14,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index 8ff091a2..68817fd9 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -1,12 +1,12 @@ #### options.specs -> `object` as map of named: `object` +> `object` as map of named `object` properties specs specific options #### specs.catalog -> `object` as map of named: `object` +> `object` as map of named `object` properties To map defined catalog for schema retrieval based on catalog specific parameters. @@ -72,7 +72,7 @@ http specific options. #### http.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -92,18 +92,18 @@ Defines how to extract credentials from the HTTP request. #### credentials.cookies -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named cookie value pattern with `{credentials}`. #### credentials.headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. #### credentials.query\* -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named query parameter value pattern with `{credentials}`. diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md index 3a9089a1..60d70079 100644 --- a/src/reference/config/bindings/asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -24,7 +24,7 @@ Conditional `asyncapi`-specific routes for adapting streams. #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 053b65fe..4e400318 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -55,10 +55,20 @@ Fetch offset to use for new consumers #### topics[].transforms -> `array` +> `array` of `object` +#### transforms[].extract-key + +> `string` | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` + +#### transforms[].extract-headers + +> `object` as map of named `string` properties | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` + +must read `${message.value.name-of-the-header}` + #### kafka.sasl > `object` @@ -125,7 +135,7 @@ HTTP specific options. #### http.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -147,7 +157,7 @@ MQTT specific options. #### mqtt.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index 482e8668..4e4b4412 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -125,7 +125,7 @@ HTTP specific options. #### http.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -147,7 +147,7 @@ MQTT specific options. #### mqtt.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 9d4b5738..080adb3c 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -125,7 +125,7 @@ http specific options. #### http.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -147,7 +147,7 @@ MQTT specific options. #### mqtt.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index ef828696..4245bbc4 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -45,7 +45,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` Roles required by named guard. @@ -81,7 +81,7 @@ Pattern matching the fully qualified name of a `grpc` service method, in the for #### when[].metadata -> `object` as map of named: `string` or `object` properties +> `object` as map of named `string` or `object` properties Metadata header name value pairs (all match). @@ -166,7 +166,7 @@ The filter criteria for the Kafka message key. #### filters[].headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties The filter criteria for the Kafka message headers. @@ -213,7 +213,7 @@ The Kafka message key to include with each message. #### with.overrides -> `object` as map of named: `string` properties +> `object` as map of named `string` properties The Kafka message headers to inject with each message. diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index e0c67735..9942eacf 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -21,7 +21,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` Roles required by named guard. @@ -57,7 +57,7 @@ gRPC service method name, such as `example.EchoService/EchoUnary`, or service me #### when[].metadata -> `object` as map of named: `string` or `object` properties +> `object` as map of named `string` or `object` properties Metadata header name value pairs (all match). diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index 3dad7533..ef4b26e1 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -19,7 +19,7 @@ The grpc server binding adapts `http` request-response streams to `grpc` request ### catalog -> `object` as map of named: `array` +> `object` as map of named `array` To map defined catalog for schema retrieval based on catalog specific parameters. diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md index 218eec7f..f807275e 100644 --- a/src/reference/config/bindings/http-filesystem/.partials/routes.md +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -15,7 +15,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index f8268c6a..f7c34134 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -65,7 +65,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` Roles required by named guard. @@ -178,7 +178,7 @@ Message key, optionally referencing path parameter such as `${params.key}`. #### filters[].headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Message headers, with value optionally referencing path parameter such as `${params.headerX}`. @@ -265,7 +265,7 @@ Kafka message key, optionally referencing path parameter such as `${params.id}`. #### with.overrides -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Kafka message headers, with values optionally referencing path parameter. @@ -277,7 +277,7 @@ Kafka reply-to topic name. #### with.async -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Allows an HTTP response to be retrieved asynchronously. diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index 0c557386..fe249dde 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -3,7 +3,7 @@ > `array` of `object` - +Options to configure typed validations for request fields. #### requests[].content @@ -75,7 +75,7 @@ URL path of the HTTP request. > `array` of `object` - +Options to configure typed validations for response fields. #### responses[].content @@ -130,6 +130,6 @@ Supported protocol versions. #### options.overrides -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Request header overrides. diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index c7e7c75d..a3585de0 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -15,7 +15,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. @@ -43,7 +43,7 @@ routes: #### when[].headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Header name value pairs (all match). @@ -70,7 +70,7 @@ Options for headers when adapting a route. #### headers.overrides -> `object` as map of named: `string` properties +> `object` as map of named `string` properties HTTP header name value pairs overrides. diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index 41250ee6..c89a4797 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -133,7 +133,7 @@ Exposed response headers. #### options.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by a named guard for the `HTTP/1.1` and `HTTP/2` protocols. diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index 3fc81116..cad4272d 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -21,7 +21,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` Roles required by named guard. @@ -61,7 +61,7 @@ The name of a Kafka topic for requests. #### when[].headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Header name value pairs (all match). diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index 09b86d7c..2d4abfff 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `kafka`-specific routes. #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md index 39eb4e44..59954622 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -18,7 +18,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index 3a6156cd..dcfe5553 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `mqtt`-specific routes. #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index b2f6e73e..a70f5f0e 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -34,7 +34,7 @@ options: #### options.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by a named guard. diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index ee5cc8d1..e157ec1e 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -34,7 +34,7 @@ options: #### options.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by a named guard. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index c2c27558..9095f4f0 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -29,13 +29,13 @@ OpenAPI and AsyncAPI specs definition. #### specs.openapi\* -> `object` as map of named: `object` +> `object` as map of named `object` properties Options for each configured OpenAPI spec. #### openapi.catalog -> `object` as map of named: `object` +> `object` as map of named `object` properties Catalog specific options. @@ -53,13 +53,13 @@ Catalog artifact version to use. #### specs.asyncapi\* -> `object` as map of named: `object` +> `object` as map of named `object` properties Options for each configured AsyncAPI spec. #### asyncapi.catalog -> `object` as map of named: `object` +> `object` as map of named `object` properties `catalog` catalog specific options. diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md index 8ccd09f3..280cdc20 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index 4a80ce2d..12d0a014 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -18,13 +18,13 @@ options: #### options.specs -> `object` as map of named: `object` +> `object` as map of named `object` properties `specs` specific options #### specs.catalog -> `object` as map of named: `object` +> `object` as map of named `object` properties catalog specific options. @@ -60,7 +60,7 @@ http specific options. #### http.authorization -> `object` as map of named: `object` +> `object` as map of named `object` properties Authorization by guard for the `HTTP/1.1` and `HTTP/2` protocols. @@ -80,19 +80,19 @@ Defines how to extract credentials from the HTTP request. #### credentials.cookies -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named cookie value pattern with `{credentials}`. #### credentials.headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named header value pattern with `{credentials}`, e.g. `"Bearer` `{credentials}"`. #### credentials.query\* -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Named query parameter value pattern with `{credentials}`. diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index 96bf29a5..aab34fe3 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -16,7 +16,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md index 3764f3cb..5314970b 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/routes.md +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -17,7 +17,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. @@ -88,7 +88,7 @@ Message key, optionally referencing path parameter such as `${params.key}`. #### filters[].headers -> `object` as map of named: `string` properties +> `object` as map of named `string` properties Message headers, with value optionally referencing path parameter such as `${params.headerX}`. diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md index d4efe708..02611432 100644 --- a/src/reference/config/bindings/sse/.partials/routes.md +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -16,7 +16,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/tcp/.partials/routes.md b/src/reference/config/bindings/tcp/.partials/routes.md index 0acec1da..910fec58 100644 --- a/src/reference/config/bindings/tcp/.partials/routes.md +++ b/src/reference/config/bindings/tcp/.partials/routes.md @@ -6,7 +6,7 @@ Conditional `tcp`-specific routes. #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index 4e3b5ae6..5e930abf 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -13,7 +13,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index b2c39d1d..8ae2402f 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -13,7 +13,7 @@ routes: #### routes[].guarded -> `object` as map of named: `array` of `string` +> `object` as map of named `array` of `string` List of roles required by each named guard to authorize this route. diff --git a/src/reference/config/catalogs/filesystem.md b/src/reference/config/catalogs/filesystem.md index d27cdb04..2c08239f 100644 --- a/src/reference/config/catalogs/filesystem.md +++ b/src/reference/config/catalogs/filesystem.md @@ -29,7 +29,7 @@ The `filesystem`-specific options. #### options.subjects -> `object` as map of named: `object` +> `object` as map of named `object` properties Unique identifier for artifact categorization in the catalog. diff --git a/src/reference/config/catalogs/inline.md b/src/reference/config/catalogs/inline.md index e20ec208..23a1de3e 100644 --- a/src/reference/config/catalogs/inline.md +++ b/src/reference/config/catalogs/inline.md @@ -43,7 +43,7 @@ The `inline`-specific options. #### options.subjects -> `object` as map of named: `object` +> `object` as map of named `object` properties Unique identifier for schema categorization in the registry. diff --git a/src/reference/config/models/.partials/cataloged.md b/src/reference/config/models/.partials/cataloged.md index 974dd279..ba1bbfa2 100644 --- a/src/reference/config/models/.partials/cataloged.md +++ b/src/reference/config/models/.partials/cataloged.md @@ -1,6 +1,6 @@ ### catalog\* -> `object` as map of named: `array` +> `object` as map of named `array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. diff --git a/src/reference/config/models/.partials/integer.md b/src/reference/config/models/.partials/integer.md index 250a981e..7ce1bc1b 100644 --- a/src/reference/config/models/.partials/integer.md +++ b/src/reference/config/models/.partials/integer.md @@ -8,7 +8,7 @@ The format for the integer. > `integer` - +Restrict the integer to a multiple of a given integer. ### range diff --git a/src/reference/config/models/.partials/number.md b/src/reference/config/models/.partials/number.md index 16b74ae1..a8f96fbd 100644 --- a/src/reference/config/models/.partials/number.md +++ b/src/reference/config/models/.partials/number.md @@ -8,7 +8,7 @@ The format for the number. > `number` - +Restrict the number to a multiple of a given number. ### range diff --git a/src/reference/config/models/protobuf.md b/src/reference/config/models/protobuf.md index 931a10a8..fb19acc7 100644 --- a/src/reference/config/models/protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -40,7 +40,7 @@ Transforms the model from this data type to the Protobuf schema on produce and t ### catalog\* -> `object` as map of named: `array` +> `object` as map of named `array` To map defined catalog for schema retrieval based on catalog specific parameters. Any of the possible combination can be configured. diff --git a/src/reference/config/overview.md b/src/reference/config/overview.md index 0b9d8c3c..c6447820 100644 --- a/src/reference/config/overview.md +++ b/src/reference/config/overview.md @@ -36,7 +36,7 @@ Namespace name. ### bindings -> `object` as map of named:[`binding`](./bindings/) properties +> `object` as map of named[`binding`](./bindings/) properties Each configured `binding` represents a step in the pipeline as data streams are decoded, translated or encoded according to a specific protocol `type`. @@ -52,7 +52,7 @@ Unconditional `exit` binding acting as a default if none of the conditional rout ### guards -> `object` as map of named:[`guard`](./guards/) properties +> `object` as map of named[`guard`](./guards/) properties Each configured `guard` represents a security checkpoint for one or more bindings based on a specific implementation `type`. @@ -62,7 +62,7 @@ Associated roles can be enforced during routing by only following routes `guarde ### vaults -> `object` as map of named:[`vault`](./vaults/) properties +> `object` as map of named[`vault`](./vaults/) properties Each configured `vault` represents a container for digital keys and certificates based on a specific implementation `type`. @@ -70,7 +70,7 @@ Vaults can be used by specific protocol bindings, such as `tls`, to negotiate sh ### catalogs -> `object` as map of named:[`catalog`](./catalogs/) properties +> `object` as map of named[`catalog`](./catalogs/) properties Each configured `catalog` represent a catalog of schemas of various format based on a specific implementation `type`. @@ -98,7 +98,7 @@ Default attributes to optionally include when exporting metrics. #### exporters -> `object` as map of named:[`exporter`](./telemetry/exporters/) properties +> `object` as map of named[`exporter`](./telemetry/exporters/) properties Map of named exporters. From 7bfcf373f142534da4478f9efbb065e446a444a3 Mon Sep 17 00:00:00 2001 From: AJ Date: Tue, 17 Sep 2024 17:11:06 -0400 Subject: [PATCH 48/54] update transforms docs --- .check-schema/index.js | 7 ++++ .../options-kafka-topics-transforms.md | 35 +++++++++++++++++++ .../config/bindings/asyncapi/client.md | 10 +----- .../config/bindings/asyncapi/proxy.md | 6 +--- .../config/bindings/asyncapi/server.md | 6 +--- .../config/bindings/kafka/cache_server.md | 4 +-- 6 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 src/reference/config/bindings/.partials/options-kafka-topics-transforms.md diff --git a/.check-schema/index.js b/.check-schema/index.js index 0df54b0c..3cd0bee7 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -27,6 +27,7 @@ const main = async () => { if (i.enum) type = "`enum`" + ` [ ${i.enum.map((e) => ("`" + e + "`")).join(", ")} ]`; if (i.items?.enum) type = `${"`array`"}${i.items.enum ? " of `enum`" + ` [ ${i.items.enum.map((e) => ("`" + e + "`")).join(", ")} ]` : ""}`; else if (i.items) type = `${"`array`"}${(i.items.type ? " of `" + (i.items.type) + "`" : "")}`; + // else if (i.oneOf?.filter(({ items }) => items?.length).length) type = "`array` of `object`"; if (patternProperties) type = OBJECT_MAP_TYPE + type; return type; } @@ -149,6 +150,12 @@ const main = async () => { .forEach(({ properties, required }) => props.push(...getObjProps(k, properties, [...(i.required || []), ...(required || [])])) ); + var oneOfItems = i.oneOf?.filter(({ items }) => items?.length) + ?.reduce((a, b) => ([ ...a, ...b.items ]), []); + if (oneOfItems?.length) { + props.push(...getObjProps(`${k}[]`, oneOfItems.reduce((a, b) => ({ ...a, ...b.properties }), {}), [])) + } + i.additionalProperties?.oneOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => props.push(...getObjProps(k, properties, required)) diff --git a/src/reference/config/bindings/.partials/options-kafka-topics-transforms.md b/src/reference/config/bindings/.partials/options-kafka-topics-transforms.md new file mode 100644 index 00000000..bafcc330 --- /dev/null +++ b/src/reference/config/bindings/.partials/options-kafka-topics-transforms.md @@ -0,0 +1,35 @@ +#### topics[].transforms + +> `array` + +Extract key or value attributes from the typed Kafka message to apply to the Kafka message id or Kafka headers. The `extract-key` property must come before the `extract-headers` property if they both exist. + +```yaml +transforms: + - extract-key: ${message.key.id} +``` + +```yaml +transforms: + - extract-headers: + my-kafka-header: ${message.value.test} +``` + +```yaml +transforms: + - extract-key: ${message.value.id} + - extract-headers: + my-kafka-header: ${message.value.test} +``` + +#### transforms[].extract-key + +> `string` | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` + +Use a part of the Kafka message as the Kafka message key. + +#### transforms[].extract-headers + +> `object` as map of named `string` properties | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` + +Use a part of the Kafka message as a Kafka message header. diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 4e400318..9ac99490 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -53,15 +53,7 @@ Topic configuration. Fetch offset to use for new consumers -#### topics[].transforms - -> `array` of `object` - - - -#### transforms[].extract-key - -> `string` | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` + #### transforms[].extract-headers diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index 4e4b4412..1b519e30 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -53,11 +53,7 @@ Topic configuration. Fetch offset to use for new consumers -#### topics[].transforms - -> `array` - - + #### kafka.sasl diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index 080adb3c..fd0fea6d 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -53,11 +53,7 @@ Topic configuration. Fetch offset to use for new consumers -#### topics[].transforms - -> `array` - - + #### kafka.sasl diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index ae4a26a5..c3ca0208 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -48,9 +48,7 @@ Topic configuration. Fetch offset to use for new consumers -#### topics[].transforms - -> `array` + From 6f7f86f9184695d64f5ed244df3e90a5d71de25f Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 18 Sep 2024 09:02:44 -0400 Subject: [PATCH 49/54] update challenge type --- src/reference/config/guards/jwt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reference/config/guards/jwt.md b/src/reference/config/guards/jwt.md index 63b9a9a7..ffa70bce 100644 --- a/src/reference/config/guards/jwt.md +++ b/src/reference/config/guards/jwt.md @@ -91,7 +91,7 @@ Audience claim. #### options.challenge -> `number` +> `integer` Challenge period (seconds). From 82a72e86270fea71849bfeb1014c7fb00f171df8 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 18 Sep 2024 09:49:29 -0400 Subject: [PATCH 50/54] fix global inheritance --- .check-schema/index.js | 37 ++++---- .check-schema/zilla-schema.json | 89 ++++++++++++++++--- .../options-kafka-topics-transforms.md | 4 +- .../config/bindings/asyncapi/client.md | 6 -- .../config/bindings/http/.partials/options.md | 8 +- src/reference/config/bindings/mqtt/server.md | 2 +- .../config/bindings/openapi/client.md | 1 + .../config/bindings/openapi/server.md | 2 + src/reference/config/bindings/tcp/server.md | 1 + 9 files changed, 107 insertions(+), 43 deletions(-) diff --git a/.check-schema/index.js b/.check-schema/index.js index 3cd0bee7..da45efc3 100644 --- a/.check-schema/index.js +++ b/.check-schema/index.js @@ -151,11 +151,11 @@ const main = async () => { props.push(...getObjProps(k, properties, [...(i.required || []), ...(required || [])])) ); var oneOfItems = i.oneOf?.filter(({ items }) => items?.length) - ?.reduce((a, b) => ([ ...a, ...b.items ]), []); + ?.reduce((a, b) => ([...a, ...b.items]), []); if (oneOfItems?.length) { props.push(...getObjProps(`${k}[]`, oneOfItems.reduce((a, b) => ({ ...a, ...b.properties }), {}), [])) } - + i.additionalProperties?.oneOf?.filter(({ properties }) => !!properties) .forEach(({ properties, required }) => props.push(...getObjProps(k, properties, required)) @@ -250,29 +250,28 @@ const main = async () => { const { kind: _, ...properties } = a.properties; return { ...o, - [a.properties?.kind?.not.const]: {}, + [a.properties?.kind?.not.const]: { properties: {}, required: [] }, all: { ...o.all, ...a, properties } }; }, { all: {} }); + var getGlobalProps = (kind) => ({ + ...bindings.properties, + ...(kindsGlobalIs[kind]?.properties || {}), + ...(kindsGlobalNot[kind]?.properties || kindsGlobalNot.all?.properties || {}), + }); + var getGlobalReqs = (kind) => ([ + ...bindings.required, + ...(kindsGlobalIs[kind]?.required || []), + ...(kindsGlobalNot[kind]?.required || kindsGlobalNot.all?.required || []), + ]); bindings.allOf?.forEach(({ if: fi, then }) => { var folder = `bindings.${fi.properties.type.const}`; - var globals = { - properties: { - ...(kindsGlobalIs[fi.properties.type.const]?.properties || {}), - ...(kindsGlobalNot[fi.properties.type.const]?.properties || kindsGlobalNot.all?.properties || {}), - }, - required: [ - ...(kindsGlobalIs[fi.properties.type.const]?.required || []), - ...(kindsGlobalNot[fi.properties.type.const]?.required || kindsGlobalNot.all?.required || []), - ], - } if (then.oneOf) { sections.push(...then.oneOf.map(({ properties, required, oneOf, anyOf, allOf }) => ({ folder, name: properties.kind.const, props: { - ...bindings.properties, - ...globals.properties, + ...getGlobalProps(properties.kind.const), ...(then.properties || {}), ...(properties || {}), options: getOptions(properties.kind.const, then, properties), @@ -281,15 +280,14 @@ const main = async () => { anyOf: [...(then.anyOf || []), ...(anyOf || [])], oneOf: [...(then.oneOf || []), ...(oneOf || [])], }, - required: getRequired(properties.kind.const, then, [...(globals.required || []), ...(required || [])]), + required: getRequired(properties.kind.const, then, [...(getGlobalReqs(properties.kind.const) || []), ...(required || [])]), }))); } else { sections.push({ folder, name: then.properties.kind.enum[0], props: { - ...bindings.properties, - ...globals.properties, + ...getGlobalProps(then.properties.kind.enum[0]), ...(then.properties || {}), options: getOptions(then.properties.kind.enum[0], bindings, then.properties), routes: getRoutes(then.properties.kind.enum[0], bindings, then), @@ -297,12 +295,11 @@ const main = async () => { anyOf: [...(then.anyOf || [])], oneOf: [...(then.oneOf || [])], }, - required: [...(globals.required || []), ...(then.required || [])], + required: [...(getGlobalReqs(then.properties.kind.enum[0]) || []), ...(then.required || [])], }); } }) - var exporterProps = schema.properties.telemetry.properties.exporters.patternProperties[Object.keys(schema.properties.telemetry.properties.exporters.patternProperties)[0]] sections.push( ...exporterProps?.allOf?.map(({ if: fi, then }) => ({ diff --git a/.check-schema/zilla-schema.json b/.check-schema/zilla-schema.json index 86d72576..f1b69406 100644 --- a/.check-schema/zilla-schema.json +++ b/.check-schema/zilla-schema.json @@ -257,7 +257,7 @@ }, "challenge": { "title": "Challenge", - "type": "number" + "type": "integer" } }, "additionalProperties": false @@ -933,6 +933,7 @@ "properties": { "extract-key": { "type": "string", + "pattern": "^\\$\\{message\\.(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$", "additionalProperties": false } } @@ -946,7 +947,7 @@ "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + "pattern": "^\\$\\{message\\.(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" } }, "additionalProperties": false @@ -968,7 +969,7 @@ "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "string", - "pattern": "^\\$\\{message\\.value\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" + "pattern": "^\\$\\{message\\.(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$" } }, "additionalProperties": false @@ -987,6 +988,7 @@ "properties": { "extract-key": { "type": "string", + "pattern": "^\\$\\{message\\.(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$", "additionalProperties": false } } @@ -1240,6 +1242,7 @@ "openapi-asyncapi", "pgsql", "proxy", + "risingwave", "sse", "sse-kafka", "tcp", @@ -3084,15 +3087,9 @@ ] } }, - "exit": false, - "entry": { - "title": "Entry", - "type": "string", - "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" - } + "exit": false }, "required": [ - "entry", "routes" ] } @@ -3896,6 +3893,78 @@ ] } }, + { + "if": { + "properties": { + "type": { + "const": "risingwave" + } + } + }, + "then": { + "properties": { + "type": { + "const": "risingwave" + }, + "kind": { + "enum": [ + "proxy" + ] + }, + "vault": false, + "options": { + "properties": { + "kafka": { + "title": "Kafka", + "type": "object", + "properties": { + "properties": { + "title": "Properties", + "type": "object", + "properties": { + "bootstrap.server": { + "type": "string" + } + } + }, + "format": { + "$ref": "#/$defs/converter" + } + } + } + }, + "additionalProperties": false + }, + "routes": { + "items": { + "properties": { + "when": { + "items": { + "additionalProperties": false, + "properties": { + "commands": { + "title": "Commands", + "type": "array", + "items": { + "type": "string", + "enum": [ + "CREATE TOPIC" + ] + } + } + } + } + }, + "with": false + } + } + } + }, + "required": [ + "exit" + ] + } + }, { "if": { "properties": { diff --git a/src/reference/config/bindings/.partials/options-kafka-topics-transforms.md b/src/reference/config/bindings/.partials/options-kafka-topics-transforms.md index bafcc330..1bdaa3f9 100644 --- a/src/reference/config/bindings/.partials/options-kafka-topics-transforms.md +++ b/src/reference/config/bindings/.partials/options-kafka-topics-transforms.md @@ -24,12 +24,12 @@ transforms: #### transforms[].extract-key -> `string` | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` +> `string` | Pattern: `^\\$\\{message\\.(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` Use a part of the Kafka message as the Kafka message key. #### transforms[].extract-headers -> `object` as map of named `string` properties | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` +> `object` as map of named `string` properties | Pattern: `^\\$\\{message\\.(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` Use a part of the Kafka message as a Kafka message header. diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 9ac99490..1757e288 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -55,12 +55,6 @@ Fetch offset to use for new consumers -#### transforms[].extract-headers - -> `object` as map of named `string` properties | Pattern: `^\\$\\{message\\..(key|value)\\.([A-Za-z_][A-Za-z0-9_]*)\\}$` - -must read `${message.value.name-of-the-header}` - #### kafka.sasl > `object` diff --git a/src/reference/config/bindings/http/.partials/options.md b/src/reference/config/bindings/http/.partials/options.md index fe249dde..188f6fae 100644 --- a/src/reference/config/bindings/http/.partials/options.md +++ b/src/reference/config/bindings/http/.partials/options.md @@ -25,7 +25,7 @@ Content type of the HTTP request. #### requests[].headers -> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` +> `object` as map of named `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` as map of named `object` properties Enforce validation for request headers. @@ -43,7 +43,7 @@ Query parameters of the HTTP request. #### params.path -> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` +> `object` as map of named `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` as map of named `object` properties Enforce validation for path @@ -55,7 +55,7 @@ A schema or type to validate the path content. Refer to the individual [model](. #### params.query -> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` +> `object` as map of named `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` as map of named `object` properties Enforce validation for query @@ -99,7 +99,7 @@ Content type of the HTTP response. #### responses[].headers -> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` +> `object` as map of named `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` as map of named `object` properties Enforce validation for response headers. diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index e157ec1e..b7afdc6c 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -80,7 +80,7 @@ A schema or type to validate the request content. Refer to the individual [model #### topics[].user-properties -> `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` +> `object` as map of named `enum` [ `double`, `float`, `int32`, `int64`, `json`, `string` ], `object` as map of named `object` properties Enforce validation for user provided properties. diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md index 4c5f3f37..799db621 100644 --- a/src/reference/config/bindings/openapi/client.md +++ b/src/reference/config/bindings/openapi/client.md @@ -14,6 +14,7 @@ The openapi client binding + #### options.tls > `object` diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md index dcf04e23..a435d31c 100644 --- a/src/reference/config/bindings/openapi/server.md +++ b/src/reference/config/bindings/openapi/server.md @@ -14,6 +14,8 @@ The openapi server binding + + #### options.tls > `object` diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md index cb298b23..068352d5 100644 --- a/src/reference/config/bindings/tcp/server.md +++ b/src/reference/config/bindings/tcp/server.md @@ -15,6 +15,7 @@ The tcp server binding + #### routes[].exit > `string` From 89ba7bc808369e1bc927b110d725f4f4ea8c9f9c Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 18 Sep 2024 13:23:33 -0400 Subject: [PATCH 51/54] normalizing options description syntax --- .config/vale/styles/Vocab/Base/accept.txt | 4 +++ README.md | 25 ++++++++++++++++--- .../bindings/asyncapi/.partials/options.md | 4 +-- .../config/bindings/asyncapi/client.md | 12 ++++----- .../config/bindings/asyncapi/proxy.md | 12 ++++----- .../config/bindings/asyncapi/server.md | 12 ++++----- .../bindings/filesystem/.partials/options.md | 2 +- .../bindings/grpc-kafka/.partials/options.md | 2 +- .../bindings/http-kafka/.partials/options.md | 8 +++--- .../config/bindings/http-kafka/proxy.md | 2 +- src/reference/config/bindings/http/client.md | 2 +- src/reference/config/bindings/http/server.md | 2 +- .../bindings/kafka-grpc/.partials/options.md | 8 +++--- .../bindings/kafka-grpc/remote_server.md | 2 +- .../bindings/kafka-proxy/.partials/options.md | 2 +- .../config/bindings/kafka/cache_client.md | 2 +- .../config/bindings/kafka/cache_server.md | 2 +- src/reference/config/bindings/kafka/client.md | 2 +- .../bindings/mqtt-kafka/.partials/options.md | 4 +-- .../config/bindings/mqtt-kafka/proxy.md | 2 +- src/reference/config/bindings/mqtt/client.md | 2 +- src/reference/config/bindings/mqtt/server.md | 2 +- .../openapi-asyncapi/.partials/options.md | 6 ++--- .../bindings/openapi/.partials/options.md | 8 +++--- .../config/bindings/openapi/client.md | 2 +- .../config/bindings/openapi/server.md | 2 +- .../config/bindings/sse/.partials/options.md | 6 ++--- .../config/bindings/tcp/.partials/options.md | 2 +- .../config/bindings/tls/.partials/options.md | 2 +- .../config/bindings/ws/.partials/options.md | 2 +- .../.partials/options-schema-registry.md | 2 +- .../config/catalogs/apicurio-registry.md | 2 +- src/reference/config/catalogs/aws-glue.md | 2 +- src/reference/config/catalogs/filesystem.md | 2 +- src/reference/config/catalogs/inline.md | 2 +- src/reference/config/guards/jwt.md | 2 +- .../telemetry/exporters/aws-cloudwatch.md | 2 +- .../config/telemetry/exporters/otlp.md | 2 +- .../config/telemetry/exporters/prometheus.md | 2 +- .../config/telemetry/exporters/syslog.md | 2 +- src/reference/config/vaults/aws.md | 2 +- src/reference/config/vaults/filesystem.md | 2 +- 42 files changed, 95 insertions(+), 74 deletions(-) diff --git a/.config/vale/styles/Vocab/Base/accept.txt b/.config/vale/styles/Vocab/Base/accept.txt index 330287d7..9f698ea6 100644 --- a/.config/vale/styles/Vocab/Base/accept.txt +++ b/.config/vale/styles/Vocab/Base/accept.txt @@ -72,6 +72,7 @@ Conduktor config const CQRS +crv cspell datagram EDAs @@ -95,9 +96,12 @@ jwt Kafka Karapace kcat +kty leader_only Lua lycheeverse +maxLength +minLength MQTT mvnw netcat diff --git a/README.md b/README.md index cd7a7c56..2fbcc1f7 100644 --- a/README.md +++ b/README.md @@ -93,12 +93,8 @@ Pages in the reference section describe, as briefly as possible and in an orderl - `#### parent.child` - Arrays of objects have brackets `[]` only when describing child properties - `#### parentArray[].child` - -Table of Contents (ToC) anchor links are generated using the [Markdown All in One](https://markdown-all-in-one.github.io/docs/guide/table-of-contents.html#overview) extension with the `gitea` slug mode. - - Required props have an escaped splat `\*` at the end of the header and ToC link - `### topLevelProp\*` - - `- [topLevelProp\*](#toplevelprop)` ````markdown # Title @@ -201,3 +197,24 @@ Every page has an `Edit this page on GitHub` link at the bottom for you to check ## Copyright and license Copyright Aklivity, Inc. 2024, released under the [Apache 2.0 license](https://github.com/aklivity/zilla/blob/main/LICENSE). + +org.agrona.concurrent.AgentTerminationException: java.lang.NullPointerException: Cannot invoke "io.aklivity.zilla.runtime.binding.kafka.internal.types.KafkaEvaluation.ordinal()" because "evaluation" is null + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.registry.EngineWorker.doWork(EngineWorker.java:849) + at org.agrona.core/org.agrona.concurrent.AgentRunner.doWork(AgentRunner.java:304) + at org.agrona.core/org.agrona.concurrent.AgentRunner.workLoop(AgentRunner.java:296) + at org.agrona.core/org.agrona.concurrent.AgentRunner.run(AgentRunner.java:162) + at java.base/java.lang.Thread.run(Thread.java:1570) +Caused by: java.lang.NullPointerException: Cannot invoke "io.aklivity.zilla.runtime.binding.kafka.internal.types.KafkaEvaluation.ordinal()" because "evaluation" is null + at io.aklivity.zilla.runtime.binding.kafka@0.9.93/io.aklivity.zilla.runtime.binding.kafka.internal.cache.KafkaCacheCursorFactory.asCondition(KafkaCacheCursorFactory.java:1163) + at io.aklivity.zilla.runtime.binding.kafka@0.9.93/io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaCacheClientFetchFactory.newStream(KafkaCacheClientFetchFactory.java:242) + at io.aklivity.zilla.runtime.binding.kafka@0.9.93/io.aklivity.zilla.runtime.binding.kafka.internal.stream.KafkaCacheClientFactory.newStream(KafkaCacheClientFactory.java:149) + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.registry.EngineWorker.handleBeginInitial(EngineWorker.java:1584) + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.registry.EngineWorker.handleDefaultReadInitial(EngineWorker.java:1348) + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.registry.EngineWorker.handleReadInitial(EngineWorker.java:1288) + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.registry.EngineWorker.handleRead(EngineWorker.java:1235) + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.concurent.ManyToOneRingBuffer.read(ManyToOneRingBuffer.java:229) + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.registry.EngineWorker.doWork(EngineWorker.java:843) + ... 4 more + Suppressed: java.lang.Exception: [engine/data#1] [0x010100000000b79d] streams=[consumeAt=0x00549a60 (0x0000000284549a60), produceAt=0x009f31d8 (0x00000002849f31d8)] + at io.aklivity.zilla.runtime.engine@0.9.93/io.aklivity.zilla.runtime.engine.internal.registry.EngineWorker.doWork(EngineWorker.java:847) + ... 4 more diff --git a/src/reference/config/bindings/asyncapi/.partials/options.md b/src/reference/config/bindings/asyncapi/.partials/options.md index 68817fd9..4fc4a812 100644 --- a/src/reference/config/bindings/asyncapi/.partials/options.md +++ b/src/reference/config/bindings/asyncapi/.partials/options.md @@ -2,7 +2,7 @@ > `object` as map of named `object` properties -specs specific options +The `specs` specific options. #### specs.catalog @@ -68,7 +68,7 @@ Port number(s), including port number ranges. > `object` -http specific options. +The http specific options. #### http.authorization diff --git a/src/reference/config/bindings/asyncapi/client.md b/src/reference/config/bindings/asyncapi/client.md index 1757e288..30b6b254 100644 --- a/src/reference/config/bindings/asyncapi/client.md +++ b/src/reference/config/bindings/asyncapi/client.md @@ -18,7 +18,7 @@ The asyncapi client binding creates composite of `kafka` or `mqtt` or `http`, an > `object` -`client`-specific options. +The `client` specific options. ```yaml specs: @@ -37,7 +37,7 @@ specs: > `object` -`kafka` binding specific options. +The `kafka` binding specific options. #### kafka.topics @@ -67,7 +67,7 @@ SASL credentials to use when connecting to `kafka` brokers. > `object` -`mqtt-kafka` binding specific options. +The `mqtt-kafka` binding specific options. #### mqtt-kafka.channels @@ -117,7 +117,7 @@ messages: mqttMessages > `object` -HTTP specific options. +The HTTP specific options. #### http.authorization @@ -139,7 +139,7 @@ authorization: > `object` -MQTT specific options. +The MQTT specific options. #### mqtt.authorization @@ -161,7 +161,7 @@ authorization: > `object` -TLS specific options. +The TLS specific options. diff --git a/src/reference/config/bindings/asyncapi/proxy.md b/src/reference/config/bindings/asyncapi/proxy.md index 1b519e30..c539f77e 100644 --- a/src/reference/config/bindings/asyncapi/proxy.md +++ b/src/reference/config/bindings/asyncapi/proxy.md @@ -18,7 +18,7 @@ The asyncapi proxy binding creates composite of `mqtt-kafka` binding with proxy > `object` -`proxy`-specific options. +The `proxy` specific options. ```yaml specs: @@ -37,7 +37,7 @@ specs: > `object` -`kafka` binding specific options. +The `kafka` binding specific options. #### kafka.topics @@ -67,7 +67,7 @@ SASL credentials to use when connecting to `kafka` brokers. > `object` -`mqtt-kafka` binding specific options. +The `mqtt-kafka` binding specific options. #### mqtt-kafka.channels @@ -117,7 +117,7 @@ messages: mqttMessages > `object` -HTTP specific options. +The HTTP specific options. #### http.authorization @@ -139,7 +139,7 @@ authorization: > `object` -MQTT specific options. +The MQTT specific options. #### mqtt.authorization @@ -161,7 +161,7 @@ authorization: > `object` -TLS specific options. +The TLS specific options. diff --git a/src/reference/config/bindings/asyncapi/server.md b/src/reference/config/bindings/asyncapi/server.md index fd0fea6d..e9a6a16d 100644 --- a/src/reference/config/bindings/asyncapi/server.md +++ b/src/reference/config/bindings/asyncapi/server.md @@ -18,7 +18,7 @@ The asyncapi server binding creates composite of `tcp`, `tls`, and `mqtt` or `ht > `object` -`server`-specific options. +The `server` specific options. ```yaml specs: @@ -37,7 +37,7 @@ specs: > `object` -`kafka` binding specific options. +The `kafka` binding specific options. #### kafka.topics @@ -67,7 +67,7 @@ SASL credentials to use when connecting to `kafka` brokers. > `object` -`mqtt-kafka` binding specific options. +The `mqtt-kafka` binding specific options. #### mqtt-kafka.channels @@ -117,7 +117,7 @@ messages: mqttMessages > `object` -http specific options. +The http specific options. #### http.authorization @@ -139,7 +139,7 @@ authorization: > `object` -MQTT specific options. +The MQTT specific options. #### mqtt.authorization @@ -161,7 +161,7 @@ authorization: > `object` -`tls` specific options. +The `tls` specific options. diff --git a/src/reference/config/bindings/filesystem/.partials/options.md b/src/reference/config/bindings/filesystem/.partials/options.md index 5657249f..54445ceb 100644 --- a/src/reference/config/bindings/filesystem/.partials/options.md +++ b/src/reference/config/bindings/filesystem/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`filesystem`-specific options for `filesystem` access. +The `filesystem` specific options. ```yaml options: diff --git a/src/reference/config/bindings/grpc-kafka/.partials/options.md b/src/reference/config/bindings/grpc-kafka/.partials/options.md index 642e3502..050ef797 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/options.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`grpc-kafka`-specific options for adapting `grpc` request-response streams to `kafka` topic streams. +The `grpc-kafka` specific options. ```yaml options: diff --git a/src/reference/config/bindings/http-kafka/.partials/options.md b/src/reference/config/bindings/http-kafka/.partials/options.md index b0099a49..a36dc3f4 100644 --- a/src/reference/config/bindings/http-kafka/.partials/options.md +++ b/src/reference/config/bindings/http-kafka/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`http-kafka`-specific options for adapting `http` request-response streams to `kafka` topic streams. +`http-kafka`-specific options. ```yaml options: @@ -18,7 +18,7 @@ options: > `object` -HTTP request header used to specify the idempotency key when adapting `http` request-response streams to `kafka` topic streams. +HTTP request header used to specify the idempotency key. #### idempotency.header\* @@ -30,13 +30,13 @@ HTTP request header name for idempotency key. > `object` -Kafka request message headers injected when adapting `http` request-response streams to `kafka` topic streams. +Kafka request message headers injected. #### correlation.headers\* > `object` -Kafka request message reply to and correlation id header names injected when adapting `http` request-response streams to `kafka` topic streams. +Kafka request message reply to and correlation id header names injected. #### headers.reply-to diff --git a/src/reference/config/bindings/http-kafka/proxy.md b/src/reference/config/bindings/http-kafka/proxy.md index a655bc38..57ea7a82 100644 --- a/src/reference/config/bindings/http-kafka/proxy.md +++ b/src/reference/config/bindings/http-kafka/proxy.md @@ -4,7 +4,7 @@ shortTitle: proxy # http-kafka proxy -The http-kafka proxy binding +The http-kafka proxy binding for adapting `http` request-response streams to `kafka` topic streams. ```yaml {3} diff --git a/src/reference/config/bindings/http/client.md b/src/reference/config/bindings/http/client.md index 0b02d659..00d691d6 100644 --- a/src/reference/config/bindings/http/client.md +++ b/src/reference/config/bindings/http/client.md @@ -18,7 +18,7 @@ Conditional routes based on `http` request headers are used to route these netwo > `object` -`client`-specific options. +The `client` specific options. ```yaml options: diff --git a/src/reference/config/bindings/http/server.md b/src/reference/config/bindings/http/server.md index c89a4797..67b0bc4d 100644 --- a/src/reference/config/bindings/http/server.md +++ b/src/reference/config/bindings/http/server.md @@ -22,7 +22,7 @@ Conditional routes based on `http` request headers are used to route these appli > `object` -`server`-specific options. +The `server` specific options. ```yaml options: diff --git a/src/reference/config/bindings/kafka-grpc/.partials/options.md b/src/reference/config/bindings/kafka-grpc/.partials/options.md index d1c1b996..d51d17ab 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/options.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/options.md @@ -3,7 +3,7 @@ > `object` -`kafka-grpc`-specific options for adapting `kafka` topic streams to `grpc` request-response streams. +The `kafka-grpc` specific options. ```yaml options: @@ -28,7 +28,7 @@ The `kafka` acknowledgment mode. > `object` -Metadata header used to specify the idempotency key when adapting `kafka` topic streams to `grpc` request-response streams. +Metadata header used to specify the idempotency key. #### idempotency.metadata @@ -40,13 +40,13 @@ The `grpc` metadata header name for idempotency key. > `object` -Kafka request message headers injected when adapting `kafka` topic streams to `grpc` request-response streams. +Kafka request message headers injected. #### correlation.headers > `object` -Kafka request message correlation header names used when adapting `kafka` topic streams to `grpc` request-response streams. +Kafka request message correlation header names used. #### headers.service diff --git a/src/reference/config/bindings/kafka-grpc/remote_server.md b/src/reference/config/bindings/kafka-grpc/remote_server.md index 9221440f..e1b5ef65 100644 --- a/src/reference/config/bindings/kafka-grpc/remote_server.md +++ b/src/reference/config/bindings/kafka-grpc/remote_server.md @@ -4,7 +4,7 @@ shortTitle: remote_server # kafka-grpc remote_server -The kafka-grpc remote_server binding +The kafka-grpc remote_server binding for adapting `kafka` topic streams to `grpc` request-response streams. ```yaml {3} diff --git a/src/reference/config/bindings/kafka-proxy/.partials/options.md b/src/reference/config/bindings/kafka-proxy/.partials/options.md index 5dbefe73..6325680d 100644 --- a/src/reference/config/bindings/kafka-proxy/.partials/options.md +++ b/src/reference/config/bindings/kafka-proxy/.partials/options.md @@ -3,7 +3,7 @@ > `object` -`kafka-proxy`-specific options. +The `kafka-proxy` specific options. ```yaml options: diff --git a/src/reference/config/bindings/kafka/cache_client.md b/src/reference/config/bindings/kafka/cache_client.md index f5f73dc0..fc7977f3 100644 --- a/src/reference/config/bindings/kafka/cache_client.md +++ b/src/reference/config/bindings/kafka/cache_client.md @@ -16,7 +16,7 @@ The kafka cache_client binding > `object` -`kafka`-specific options. +The `kafka` specific options. ```yaml options: diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index c3ca0208..5ca90061 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -16,7 +16,7 @@ The kafka cache_server binding > `object` -`cache_server`-specific options. +The `cache_server` specific options. ```yaml options: diff --git a/src/reference/config/bindings/kafka/client.md b/src/reference/config/bindings/kafka/client.md index c5db1707..054fcf44 100644 --- a/src/reference/config/bindings/kafka/client.md +++ b/src/reference/config/bindings/kafka/client.md @@ -16,7 +16,7 @@ The kafka client binding > `object` -`client`-specific options. +The `client` specific options. ```yaml options: diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/options.md b/src/reference/config/bindings/mqtt-kafka/.partials/options.md index 3dd9902a..89d7dced 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/options.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`mqtt-kafka`-specific options for configuring the `kafka` topics that the proxy will use to route mqtt messages and session states; and define server reference of the MQTT server in Zilla +The `mqtt-kafka` specific options. #### options.server @@ -71,7 +71,7 @@ options: > `object` -MQTT `publish`-specific options. +The `QTT `publish` specific options. #### publish.qosMax\* diff --git a/src/reference/config/bindings/mqtt-kafka/proxy.md b/src/reference/config/bindings/mqtt-kafka/proxy.md index 6a26158b..9dbe6227 100644 --- a/src/reference/config/bindings/mqtt-kafka/proxy.md +++ b/src/reference/config/bindings/mqtt-kafka/proxy.md @@ -4,7 +4,7 @@ shortTitle: proxy # mqtt-kafka proxy -The mqtt-kafka proxy binding +The mqtt-kafka proxy binding for configuring the `kafka` topics that the proxy will use to route mqtt messages and session states; and define server reference of the MQTT server in Zilla. ```yaml {3} diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index a70f5f0e..f01bc399 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -16,7 +16,7 @@ The mqtt client binding > `object` -`client`-specific options. +The `client` specific options. ```yaml options: diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index b7afdc6c..795c060c 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -16,7 +16,7 @@ The mqtt server binding > `object` -`server`-specific options. +The `server` specific options. ```yaml options: diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md index 9095f4f0..71361757 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/options.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`openapi-asyncapi`-specific options. +The `openapi-asyncapi` specific options. ```yaml options: @@ -37,7 +37,7 @@ Options for each configured OpenAPI spec. > `object` as map of named `object` properties -Catalog specific options. +The Catalog specific options. #### catalog.subject\* @@ -61,7 +61,7 @@ Options for each configured AsyncAPI spec. > `object` as map of named `object` properties -`catalog` catalog specific options. +The `catalog` catalog specific options. #### catalog.subject\* diff --git a/src/reference/config/bindings/openapi/.partials/options.md b/src/reference/config/bindings/openapi/.partials/options.md index 12d0a014..9ff7069a 100644 --- a/src/reference/config/bindings/openapi/.partials/options.md +++ b/src/reference/config/bindings/openapi/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`openapi`-specific options. +The `openapi` specific options. ```yaml options: @@ -20,13 +20,13 @@ options: > `object` as map of named `object` properties -`specs` specific options +The `specs` specific options. #### specs.catalog > `object` as map of named `object` properties -catalog specific options. +The `catalog` specific options. #### catalog.subject\* @@ -56,7 +56,7 @@ The server url to match in openapi spec > `object` -http specific options. +The http specific options. #### http.authorization diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md index 799db621..a27fc79d 100644 --- a/src/reference/config/bindings/openapi/client.md +++ b/src/reference/config/bindings/openapi/client.md @@ -19,7 +19,7 @@ The openapi client binding > `object` -`tls` specific options. +The `tls` specific options. diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md index a435d31c..18f8f9f7 100644 --- a/src/reference/config/bindings/openapi/server.md +++ b/src/reference/config/bindings/openapi/server.md @@ -20,7 +20,7 @@ The openapi server binding > `object` -`tls` specific options. +The `tls` specific options. diff --git a/src/reference/config/bindings/sse/.partials/options.md b/src/reference/config/bindings/sse/.partials/options.md index 146ce0b5..2bf729d9 100644 --- a/src/reference/config/bindings/sse/.partials/options.md +++ b/src/reference/config/bindings/sse/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`sse`-specific options. +The `sse` specific options. ```yaml options: @@ -13,13 +13,13 @@ options: > `integer` | Default: `2000` -Retry delay (ms) +Retry delay in milliseconds. #### options.requests > `array` of `object` -the `requests`-specific options. +The `requests` specific options. #### requests[].path diff --git a/src/reference/config/bindings/tcp/.partials/options.md b/src/reference/config/bindings/tcp/.partials/options.md index 941c30c3..42fd8814 100644 --- a/src/reference/config/bindings/tcp/.partials/options.md +++ b/src/reference/config/bindings/tcp/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`tcp`-specific options. +The `tcp` specific options. ```yaml options: diff --git a/src/reference/config/bindings/tls/.partials/options.md b/src/reference/config/bindings/tls/.partials/options.md index 1c3c4317..2fb40129 100644 --- a/src/reference/config/bindings/tls/.partials/options.md +++ b/src/reference/config/bindings/tls/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`tls`-specific options. +The `tls` specific options. ```yaml options: diff --git a/src/reference/config/bindings/ws/.partials/options.md b/src/reference/config/bindings/ws/.partials/options.md index e314892b..bafedc25 100644 --- a/src/reference/config/bindings/ws/.partials/options.md +++ b/src/reference/config/bindings/ws/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`ws`-specific options. +The `ws` specific options. #### options.defaults diff --git a/src/reference/config/catalogs/.partials/options-schema-registry.md b/src/reference/config/catalogs/.partials/options-schema-registry.md index ad5f4c75..609b284e 100644 --- a/src/reference/config/catalogs/.partials/options-schema-registry.md +++ b/src/reference/config/catalogs/.partials/options-schema-registry.md @@ -2,7 +2,7 @@ > `object` -The `schema-registry`-specific options. +The `schema-registry` specific options. #### options.url diff --git a/src/reference/config/catalogs/apicurio-registry.md b/src/reference/config/catalogs/apicurio-registry.md index 44b49c50..77ed0af4 100644 --- a/src/reference/config/catalogs/apicurio-registry.md +++ b/src/reference/config/catalogs/apicurio-registry.md @@ -28,7 +28,7 @@ catalog: > `object` -The `apicurio-registry`-specific options. +The `apicurio-registry` specific options. #### options.url diff --git a/src/reference/config/catalogs/aws-glue.md b/src/reference/config/catalogs/aws-glue.md index 8626ba69..e9309ed4 100644 --- a/src/reference/config/catalogs/aws-glue.md +++ b/src/reference/config/catalogs/aws-glue.md @@ -29,7 +29,7 @@ catalog: > `object` -The `aws-glue`-specific options. +The `aws-glue` specific options. #### options.registry\* diff --git a/src/reference/config/catalogs/filesystem.md b/src/reference/config/catalogs/filesystem.md index 2c08239f..bc8ea5be 100644 --- a/src/reference/config/catalogs/filesystem.md +++ b/src/reference/config/catalogs/filesystem.md @@ -25,7 +25,7 @@ catalogs: > `object` -The `filesystem`-specific options. +The `filesystem` specific options. #### options.subjects diff --git a/src/reference/config/catalogs/inline.md b/src/reference/config/catalogs/inline.md index 23a1de3e..7f305fd6 100644 --- a/src/reference/config/catalogs/inline.md +++ b/src/reference/config/catalogs/inline.md @@ -39,7 +39,7 @@ catalog: > `object` -The `inline`-specific options. +The `inline` specific options. #### options.subjects diff --git a/src/reference/config/guards/jwt.md b/src/reference/config/guards/jwt.md index ffa70bce..204ed49a 100644 --- a/src/reference/config/guards/jwt.md +++ b/src/reference/config/guards/jwt.md @@ -56,7 +56,7 @@ guards: > `object` -`jwt`-specific options. +The `jwt` specific options. ```yaml options: diff --git a/src/reference/config/telemetry/exporters/aws-cloudwatch.md b/src/reference/config/telemetry/exporters/aws-cloudwatch.md index 4981c233..21b40209 100644 --- a/src/reference/config/telemetry/exporters/aws-cloudwatch.md +++ b/src/reference/config/telemetry/exporters/aws-cloudwatch.md @@ -34,7 +34,7 @@ exporters: > `object` -`aws`-specific options. +The `aws` specific options. ```yaml options: diff --git a/src/reference/config/telemetry/exporters/otlp.md b/src/reference/config/telemetry/exporters/otlp.md index d136d852..8d56054b 100644 --- a/src/reference/config/telemetry/exporters/otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -31,7 +31,7 @@ exporters: > `object` -`otlp`-specific options. +The `otlp` specific options. ```yaml options: diff --git a/src/reference/config/telemetry/exporters/prometheus.md b/src/reference/config/telemetry/exporters/prometheus.md index a60ea015..deb64393 100644 --- a/src/reference/config/telemetry/exporters/prometheus.md +++ b/src/reference/config/telemetry/exporters/prometheus.md @@ -29,7 +29,7 @@ exporters: > `object` -`prometheus`-specific options. +The `prometheus` specific options. ```yaml options: diff --git a/src/reference/config/telemetry/exporters/syslog.md b/src/reference/config/telemetry/exporters/syslog.md index 2d345ca8..3fd7d569 100644 --- a/src/reference/config/telemetry/exporters/syslog.md +++ b/src/reference/config/telemetry/exporters/syslog.md @@ -61,7 +61,7 @@ Vault name. Only applicable if the protocol is `tls`. > `object` -`syslog`-specific options. +The `syslog` specific options. ```yaml {4} options: diff --git a/src/reference/config/vaults/aws.md b/src/reference/config/vaults/aws.md index d13a05df..4bbe79ef 100644 --- a/src/reference/config/vaults/aws.md +++ b/src/reference/config/vaults/aws.md @@ -32,7 +32,7 @@ server: > `object` -`aws`-specific options. +The `aws` specific options. ```yaml options: diff --git a/src/reference/config/vaults/filesystem.md b/src/reference/config/vaults/filesystem.md index c7bb1d8a..667d0e7f 100644 --- a/src/reference/config/vaults/filesystem.md +++ b/src/reference/config/vaults/filesystem.md @@ -33,7 +33,7 @@ server: > `object` -`filesystem`-specific options. +The `filesystem` specific options. ```yaml options: From 2e500354ad19a29ddb63d579669d9b2becb2f4fc Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 18 Sep 2024 15:36:55 -0400 Subject: [PATCH 52/54] update descriptions and tags --- src/reference/config/bindings/amqp/.partials/routes.md | 2 +- src/reference/config/bindings/amqp/README.md | 3 ++- src/reference/config/bindings/amqp/server.md | 4 ---- .../config/bindings/asyncapi/.partials/routes.md | 6 +++--- src/reference/config/bindings/asyncapi/README.md | 7 ++++--- src/reference/config/bindings/echo/README.md | 3 ++- src/reference/config/bindings/fan/README.md | 3 ++- src/reference/config/bindings/filesystem/README.md | 3 ++- .../config/bindings/grpc-kafka/.partials/routes.md | 2 +- src/reference/config/bindings/grpc-kafka/README.md | 3 ++- src/reference/config/bindings/grpc/.partials/routes.md | 2 +- src/reference/config/bindings/grpc/README.md | 6 +++--- src/reference/config/bindings/grpc/client.md | 4 ---- src/reference/config/bindings/grpc/server.md | 5 ----- .../config/bindings/http-filesystem/.partials/routes.md | 2 +- src/reference/config/bindings/http-filesystem/README.md | 3 ++- .../config/bindings/http-kafka/.partials/options.md | 2 +- .../config/bindings/http-kafka/.partials/routes.md | 2 +- src/reference/config/bindings/http-kafka/README.md | 3 ++- src/reference/config/bindings/http/.partials/routes.md | 2 +- src/reference/config/bindings/http/README.md | 4 +++- .../config/bindings/kafka-grpc/.partials/routes.md | 2 +- src/reference/config/bindings/kafka-grpc/README.md | 3 ++- src/reference/config/bindings/kafka-proxy/README.md | 3 ++- src/reference/config/bindings/kafka-proxy/proxy.md | 2 +- src/reference/config/bindings/kafka/.partials/routes.md | 2 +- src/reference/config/bindings/kafka/README.md | 5 ++++- src/reference/config/bindings/kafka/cache_client.md | 4 ++-- src/reference/config/bindings/kafka/cache_server.md | 2 +- src/reference/config/bindings/kafka/client.md | 2 +- .../config/bindings/mqtt-kafka/.partials/routes.md | 2 +- src/reference/config/bindings/mqtt-kafka/README.md | 7 ++++--- src/reference/config/bindings/mqtt-kafka/proxy.md | 2 +- src/reference/config/bindings/mqtt/.partials/routes.md | 2 +- src/reference/config/bindings/mqtt/README.md | 8 +++++--- src/reference/config/bindings/mqtt/client.md | 2 +- src/reference/config/bindings/mqtt/server.md | 2 +- .../config/bindings/openapi-asyncapi/.partials/routes.md | 6 +++--- src/reference/config/bindings/openapi-asyncapi/README.md | 5 +++-- src/reference/config/bindings/openapi-asyncapi/proxy.md | 2 +- src/reference/config/bindings/openapi/README.md | 5 +++-- src/reference/config/bindings/openapi/client.md | 2 +- src/reference/config/bindings/openapi/server.md | 2 +- src/reference/config/bindings/proxy/.partials/routes.md | 2 +- src/reference/config/bindings/proxy/README.md | 7 ++++--- src/reference/config/bindings/proxy/client.md | 2 +- src/reference/config/bindings/proxy/server.md | 2 +- .../config/bindings/sse-kafka/.partials/routes.md | 2 +- src/reference/config/bindings/sse-kafka/README.md | 3 ++- src/reference/config/bindings/sse-kafka/proxy.md | 2 +- src/reference/config/bindings/sse/.partials/routes.md | 2 +- src/reference/config/bindings/sse/README.md | 4 +++- src/reference/config/bindings/sse/client.md | 2 +- src/reference/config/bindings/sse/server.md | 2 +- src/reference/config/bindings/tcp/.partials/routes.md | 2 +- src/reference/config/bindings/tcp/README.md | 8 +++++--- src/reference/config/bindings/tcp/client.md | 2 +- src/reference/config/bindings/tcp/server.md | 2 +- src/reference/config/bindings/tls/.partials/routes.md | 2 +- src/reference/config/bindings/tls/README.md | 6 ++++-- src/reference/config/bindings/tls/client.md | 2 +- src/reference/config/bindings/tls/proxy.md | 2 +- src/reference/config/bindings/tls/server.md | 2 +- src/reference/config/bindings/ws/.partials/routes.md | 2 +- src/reference/config/bindings/ws/README.md | 4 +++- src/reference/config/bindings/ws/client.md | 2 +- src/reference/config/bindings/ws/server.md | 2 +- src/reference/config/guards/jwt.md | 4 ++-- 68 files changed, 116 insertions(+), 99 deletions(-) diff --git a/src/reference/config/bindings/amqp/.partials/routes.md b/src/reference/config/bindings/amqp/.partials/routes.md index 0f9f203b..d0322cd9 100644 --- a/src/reference/config/bindings/amqp/.partials/routes.md +++ b/src/reference/config/bindings/amqp/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `amqp`-specific routes for adapting HTTP request-response streams to Kafka topic streams. +Conditional `amqp` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/amqp/README.md b/src/reference/config/bindings/amqp/README.md index a4a05ad0..df32eb9d 100644 --- a/src/reference/config/bindings/amqp/README.md +++ b/src/reference/config/bindings/amqp/README.md @@ -7,7 +7,8 @@ shortTitle: amqp category: - Binding tag: - - Server + - amqp + - server --- # amqp Binding diff --git a/src/reference/config/bindings/amqp/server.md b/src/reference/config/bindings/amqp/server.md index af1ec595..d75c0418 100644 --- a/src/reference/config/bindings/amqp/server.md +++ b/src/reference/config/bindings/amqp/server.md @@ -1,9 +1,5 @@ --- shortTitle: server -category: - - Binding -tag: - - Server --- # amqp server diff --git a/src/reference/config/bindings/asyncapi/.partials/routes.md b/src/reference/config/bindings/asyncapi/.partials/routes.md index 60d70079..b4324dbe 100644 --- a/src/reference/config/bindings/asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/asyncapi/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `asyncapi`-specific routes for adapting streams. +Conditional `asyncapi` specific routes. ```yaml routes: @@ -69,10 +69,10 @@ with: > `string` -AsyncAPI spec identifier that the route exits with to the next binding +AsyncAPI spec identifier that the route exits with to the next binding. #### with.operation-id > `string` -AsyncAPI OperationId that the route exits with to the next binding +AsyncAPI OperationId that the route exits with to the next binding. diff --git a/src/reference/config/bindings/asyncapi/README.md b/src/reference/config/bindings/asyncapi/README.md index 95c124ee..4720326a 100644 --- a/src/reference/config/bindings/asyncapi/README.md +++ b/src/reference/config/bindings/asyncapi/README.md @@ -7,9 +7,10 @@ shortTitle: asyncapi category: - Binding tag: - - Server - - Proxy - - Client + - asyncapi + - client + - proxy + - server --- # asyncapi Binding diff --git a/src/reference/config/bindings/echo/README.md b/src/reference/config/bindings/echo/README.md index 7ab60088..351ad22c 100644 --- a/src/reference/config/bindings/echo/README.md +++ b/src/reference/config/bindings/echo/README.md @@ -7,7 +7,8 @@ shortTitle: echo category: - Binding tag: - - Server + - echo + - server --- # echo Binding diff --git a/src/reference/config/bindings/fan/README.md b/src/reference/config/bindings/fan/README.md index 2c88dbe2..f492853c 100644 --- a/src/reference/config/bindings/fan/README.md +++ b/src/reference/config/bindings/fan/README.md @@ -7,7 +7,8 @@ shortTitle: fan category: - Binding tag: - - Server + - fan + - server --- # fan Binding diff --git a/src/reference/config/bindings/filesystem/README.md b/src/reference/config/bindings/filesystem/README.md index d1700f94..bcb97830 100644 --- a/src/reference/config/bindings/filesystem/README.md +++ b/src/reference/config/bindings/filesystem/README.md @@ -7,7 +7,8 @@ shortTitle: filesystem category: - Binding tag: - - Server + - filesystem + - server --- # filesystem Binding diff --git a/src/reference/config/bindings/grpc-kafka/.partials/routes.md b/src/reference/config/bindings/grpc-kafka/.partials/routes.md index 4245bbc4..3a6269b0 100644 --- a/src/reference/config/bindings/grpc-kafka/.partials/routes.md +++ b/src/reference/config/bindings/grpc-kafka/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `grpc-kafka`-specific routes for adapting `grpc` request-response streams to `kafka` topic streams. +Conditional `grpc-kafka` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/grpc-kafka/README.md b/src/reference/config/bindings/grpc-kafka/README.md index a954f948..7954a6b6 100644 --- a/src/reference/config/bindings/grpc-kafka/README.md +++ b/src/reference/config/bindings/grpc-kafka/README.md @@ -7,7 +7,8 @@ shortTitle: grpc-kafka category: - Binding tag: - - Proxy + - grpc-kafka + - proxy --- # grpc-kafka Binding diff --git a/src/reference/config/bindings/grpc/.partials/routes.md b/src/reference/config/bindings/grpc/.partials/routes.md index 9942eacf..5978fd8d 100644 --- a/src/reference/config/bindings/grpc/.partials/routes.md +++ b/src/reference/config/bindings/grpc/.partials/routes.md @@ -3,7 +3,7 @@ > `array` of `object` -Conditional `grpc`-specific routes. +Conditional `grpc` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/grpc/README.md b/src/reference/config/bindings/grpc/README.md index 096c350c..325237d9 100644 --- a/src/reference/config/bindings/grpc/README.md +++ b/src/reference/config/bindings/grpc/README.md @@ -4,12 +4,12 @@ dir: collapsible: false link: true shortTitle: grpc - category: - Binding tag: - - Server - - Client + - grpc + - server + - client --- # grpc Binding diff --git a/src/reference/config/bindings/grpc/client.md b/src/reference/config/bindings/grpc/client.md index 9db17ad3..bc327365 100644 --- a/src/reference/config/bindings/grpc/client.md +++ b/src/reference/config/bindings/grpc/client.md @@ -1,9 +1,5 @@ --- shortTitle: client -category: - - Binding -tag: - - Client --- # grpc client diff --git a/src/reference/config/bindings/grpc/server.md b/src/reference/config/bindings/grpc/server.md index ef4b26e1..841e3a47 100644 --- a/src/reference/config/bindings/grpc/server.md +++ b/src/reference/config/bindings/grpc/server.md @@ -1,10 +1,5 @@ --- shortTitle: server - -category: - - Binding -tag: - - Server --- # grpc server diff --git a/src/reference/config/bindings/http-filesystem/.partials/routes.md b/src/reference/config/bindings/http-filesystem/.partials/routes.md index f807275e..46f0e59a 100644 --- a/src/reference/config/bindings/http-filesystem/.partials/routes.md +++ b/src/reference/config/bindings/http-filesystem/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `http-kafka`-specific routes for adapting `http` data streams into `filesystem` data streams. +Conditional `http-kafka` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/http-filesystem/README.md b/src/reference/config/bindings/http-filesystem/README.md index 7cc67d4e..83675148 100644 --- a/src/reference/config/bindings/http-filesystem/README.md +++ b/src/reference/config/bindings/http-filesystem/README.md @@ -7,7 +7,8 @@ shortTitle: http-filesystem category: - Binding tag: - - Proxy + - http-filesystem + - proxy --- # http-filesystem Binding diff --git a/src/reference/config/bindings/http-kafka/.partials/options.md b/src/reference/config/bindings/http-kafka/.partials/options.md index a36dc3f4..986f7d75 100644 --- a/src/reference/config/bindings/http-kafka/.partials/options.md +++ b/src/reference/config/bindings/http-kafka/.partials/options.md @@ -2,7 +2,7 @@ > `object` -`http-kafka`-specific options. +`http-kafka` specific options. ```yaml options: diff --git a/src/reference/config/bindings/http-kafka/.partials/routes.md b/src/reference/config/bindings/http-kafka/.partials/routes.md index f7c34134..2fcf33f7 100644 --- a/src/reference/config/bindings/http-kafka/.partials/routes.md +++ b/src/reference/config/bindings/http-kafka/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `http-kafka`-specific routes for adapting `http` request-response streams to `kafka` topic streams. +Conditional `http-kafka` specific routes. Correlated Request-Response route: diff --git a/src/reference/config/bindings/http-kafka/README.md b/src/reference/config/bindings/http-kafka/README.md index 89bba73c..f17c77b1 100644 --- a/src/reference/config/bindings/http-kafka/README.md +++ b/src/reference/config/bindings/http-kafka/README.md @@ -7,7 +7,8 @@ shortTitle: http-kafka category: - Binding tag: - - Proxy + - http-kafka + - proxy --- # http-kafka Binding diff --git a/src/reference/config/bindings/http/.partials/routes.md b/src/reference/config/bindings/http/.partials/routes.md index a3585de0..52bdae42 100644 --- a/src/reference/config/bindings/http/.partials/routes.md +++ b/src/reference/config/bindings/http/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `http`-specific routes. +Conditional `http` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/http/README.md b/src/reference/config/bindings/http/README.md index 52d4a932..7a33ea8a 100644 --- a/src/reference/config/bindings/http/README.md +++ b/src/reference/config/bindings/http/README.md @@ -7,7 +7,9 @@ shortTitle: http category: - Binding tag: - - Server + - http + - server + - client --- # http Binding diff --git a/src/reference/config/bindings/kafka-grpc/.partials/routes.md b/src/reference/config/bindings/kafka-grpc/.partials/routes.md index cad4272d..5b2665c3 100644 --- a/src/reference/config/bindings/kafka-grpc/.partials/routes.md +++ b/src/reference/config/bindings/kafka-grpc/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `kafka-grpc`-specific routes for adapting `kafka` topic streams to `grpc` request-response streams. +Conditional `kafka-grpc` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/kafka-grpc/README.md b/src/reference/config/bindings/kafka-grpc/README.md index a6b4813d..307ae0f8 100644 --- a/src/reference/config/bindings/kafka-grpc/README.md +++ b/src/reference/config/bindings/kafka-grpc/README.md @@ -7,7 +7,8 @@ shortTitle: kafka-grpc category: - Binding tag: - - Remote Server + - kafka-grpc + - remote_server --- # kafka-grpc Binding diff --git a/src/reference/config/bindings/kafka-proxy/README.md b/src/reference/config/bindings/kafka-proxy/README.md index a6a3db06..56fc9fd2 100644 --- a/src/reference/config/bindings/kafka-proxy/README.md +++ b/src/reference/config/bindings/kafka-proxy/README.md @@ -8,7 +8,8 @@ icon: aky-zilla-plus category: - Binding tag: - - Proxy + - kafka-proxy + - proxy --- # kafka-proxy Binding diff --git a/src/reference/config/bindings/kafka-proxy/proxy.md b/src/reference/config/bindings/kafka-proxy/proxy.md index 4279965d..0f5f2976 100644 --- a/src/reference/config/bindings/kafka-proxy/proxy.md +++ b/src/reference/config/bindings/kafka-proxy/proxy.md @@ -5,7 +5,7 @@ icon: aky-zilla-plus # kafka-proxy proxy -The kafka-proxy proxy binding +The kafka-proxy proxy binding for adapting `kafka` topic streams to `kafka` topic streams. [Available in ](https://www.aklivity.io/products/zilla-plus) {.zilla-plus-badge .hint-container .info} diff --git a/src/reference/config/bindings/kafka/.partials/routes.md b/src/reference/config/bindings/kafka/.partials/routes.md index 2d4abfff..94c3797b 100644 --- a/src/reference/config/bindings/kafka/.partials/routes.md +++ b/src/reference/config/bindings/kafka/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `kafka`-specific routes. +Conditional `kafka` specific routes. #### routes[].guarded diff --git a/src/reference/config/bindings/kafka/README.md b/src/reference/config/bindings/kafka/README.md index b9315433..0dd6fcc0 100644 --- a/src/reference/config/bindings/kafka/README.md +++ b/src/reference/config/bindings/kafka/README.md @@ -7,7 +7,10 @@ shortTitle: kafka category: - Binding tag: - - Server + - kafka + - cache_client + - cache_server + - client --- # kafka Binding diff --git a/src/reference/config/bindings/kafka/cache_client.md b/src/reference/config/bindings/kafka/cache_client.md index fc7977f3..c6affd1d 100644 --- a/src/reference/config/bindings/kafka/cache_client.md +++ b/src/reference/config/bindings/kafka/cache_client.md @@ -4,7 +4,7 @@ shortTitle: cache_client # kafka cache_client -The kafka cache_client binding +The kafka cache_client binding supports filtering by `kafka` message key, headers or a combination of key and headers. ```yaml {3} @@ -16,7 +16,7 @@ The kafka cache_client binding > `object` -The `kafka` specific options. +The `cache_client` specific options. ```yaml options: diff --git a/src/reference/config/bindings/kafka/cache_server.md b/src/reference/config/bindings/kafka/cache_server.md index 5ca90061..af2114fc 100644 --- a/src/reference/config/bindings/kafka/cache_server.md +++ b/src/reference/config/bindings/kafka/cache_server.md @@ -4,7 +4,7 @@ shortTitle: cache_server # kafka cache_server -The kafka cache_server binding +The kafka cache_server binding supports proactive `fetch` of messages to keep the cache fresh in preparation for new consumers. This is enabled by configuring a list of `bootstrap` topics for the binding. ```yaml {3} diff --git a/src/reference/config/bindings/kafka/client.md b/src/reference/config/bindings/kafka/client.md index 054fcf44..449ddce3 100644 --- a/src/reference/config/bindings/kafka/client.md +++ b/src/reference/config/bindings/kafka/client.md @@ -4,7 +4,7 @@ shortTitle: client # kafka client -The kafka client binding +The kafka client binding receives inbound application streams and encodes each as a network stream via `kafka` request-response protocol. ```yaml {3} diff --git a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md index 59954622..cf12ebce 100644 --- a/src/reference/config/bindings/mqtt-kafka/.partials/routes.md +++ b/src/reference/config/bindings/mqtt-kafka/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `mqtt-kafka`-specific routes when adapting `mqtt` topic streams to `kafka` topic streams. +Conditional `mqtt-kafka` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/mqtt-kafka/README.md b/src/reference/config/bindings/mqtt-kafka/README.md index eecbb2ee..24db2277 100644 --- a/src/reference/config/bindings/mqtt-kafka/README.md +++ b/src/reference/config/bindings/mqtt-kafka/README.md @@ -7,18 +7,19 @@ shortTitle: mqtt-kafka category: - Binding tag: - - Proxy + - mqtt-kafka + - proxy --- # mqtt-kafka Binding -Defines a binding with `mqtt-kafka` support, with `proxy` behavior. +Defines a binding with `mqtt-kafka` support. ## proxy > [Full config](./proxy.md) -Behave as a `mqtt-kafka` `proxy`. +Behave as a `mqtt-kafka` `proxy` for adapting MQTT topic streams to Kafka topic streams. By configuring the Kafka topics that the proxy will use to route mqtt messages and session states an `mqtt` `server` binding can allow clients to connect and proxy MQTT messages onto Kafka topics. ```yaml {3} diff --git a/src/reference/config/bindings/mqtt-kafka/proxy.md b/src/reference/config/bindings/mqtt-kafka/proxy.md index 9dbe6227..340003bf 100644 --- a/src/reference/config/bindings/mqtt-kafka/proxy.md +++ b/src/reference/config/bindings/mqtt-kafka/proxy.md @@ -4,7 +4,7 @@ shortTitle: proxy # mqtt-kafka proxy -The mqtt-kafka proxy binding for configuring the `kafka` topics that the proxy will use to route mqtt messages and session states; and define server reference of the MQTT server in Zilla. +The mqtt-kafka proxy binding for adapting MQTT topic streams to Kafka topic streams. By configuring the Kafka topics that the proxy will use to route mqtt messages and session states an `mqtt` `server` binding can allow clients to connect and proxy MQTT messages onto Kafka topics. ```yaml {3} diff --git a/src/reference/config/bindings/mqtt/.partials/routes.md b/src/reference/config/bindings/mqtt/.partials/routes.md index dcfe5553..68e75f4a 100644 --- a/src/reference/config/bindings/mqtt/.partials/routes.md +++ b/src/reference/config/bindings/mqtt/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `mqtt`-specific routes. +Conditional `mqtt` specific routes. #### routes[].guarded diff --git a/src/reference/config/bindings/mqtt/README.md b/src/reference/config/bindings/mqtt/README.md index 6cf730a4..66ab2245 100644 --- a/src/reference/config/bindings/mqtt/README.md +++ b/src/reference/config/bindings/mqtt/README.md @@ -7,7 +7,9 @@ shortTitle: mqtt category: - Binding tag: - - Server + - mqtt + - server + - client --- # mqtt Binding @@ -18,9 +20,9 @@ Defines a binding with `mqtt` protocol support, with `server` behavior. > [Full config](./server.md) -The `server` kind `mqtt` binding decodes the MQTT protocol on the inbound network stream, producing higher level application streams for each `publish` or `subscribe` `topic`. The `session` state is also described by a higher level application stream. +The `server` kind `mqtt` binding decodes the MQTT protocol on the inbound network stream, producing higher level application streams for each `publish` or `subscribe` MQTT topic. The `session` state is also described by a higher level application stream. -Conditional routes based on the `topic` `name` are used to route these application streams to an `exit` binding. +Conditional routes based on the MQTT topic name are used to route these application streams to an `exit` binding. ```yaml {3} diff --git a/src/reference/config/bindings/mqtt/client.md b/src/reference/config/bindings/mqtt/client.md index f01bc399..d1437056 100644 --- a/src/reference/config/bindings/mqtt/client.md +++ b/src/reference/config/bindings/mqtt/client.md @@ -4,7 +4,7 @@ shortTitle: client # mqtt client -The mqtt client binding +The mqtt client binding encodes the MQTT protocol to the outbound network stream. ```yaml {3} diff --git a/src/reference/config/bindings/mqtt/server.md b/src/reference/config/bindings/mqtt/server.md index 795c060c..f422964d 100644 --- a/src/reference/config/bindings/mqtt/server.md +++ b/src/reference/config/bindings/mqtt/server.md @@ -4,7 +4,7 @@ shortTitle: server # mqtt server -The mqtt server binding +The mqtt server binding decodes the MQTT protocol on the inbound network stream, producing higher level application streams for each `publish` or `subscribe` MQTT topic. ```yaml {3} diff --git a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md index 280cdc20..f4f4e6fb 100644 --- a/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md +++ b/src/reference/config/bindings/openapi-asyncapi/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `openapi-asyncapi`-specific routes for adapting `openapi` operations to `asyncapi` operations. +Conditional `openapi-asyncapi` specific routes. #### routes[].guarded @@ -64,10 +64,10 @@ with: > `string` -AsyncAPI spec identifier that the route exits with to the next binding +AsyncAPI spec identifier that the route exits with to the next binding. #### with.operation-id > `string` -AsyncAPI OperationId that the route exits with to the next binding +AsyncAPI OperationId that the route exits with to the next binding. diff --git a/src/reference/config/bindings/openapi-asyncapi/README.md b/src/reference/config/bindings/openapi-asyncapi/README.md index 85d9bdc5..e2b7be0e 100644 --- a/src/reference/config/bindings/openapi-asyncapi/README.md +++ b/src/reference/config/bindings/openapi-asyncapi/README.md @@ -7,7 +7,8 @@ shortTitle: openapi-asyncapi category: - Binding tag: - - Proxy + - openapi-asyncapi + - proxy --- # openapi-asyncapi Binding @@ -18,7 +19,7 @@ The `proxy` kind `openapi-asyncapi` binding adapts OpenAPI request-response stre > [Full config](./proxy.md) -Behave as an `openapi-asyncapi` `proxy`. +Behave as an `openapi-asyncapi` `proxy` for adapting `openapi` operations to `asyncapi` operations. ```yaml {3} diff --git a/src/reference/config/bindings/openapi-asyncapi/proxy.md b/src/reference/config/bindings/openapi-asyncapi/proxy.md index 40f0b7be..c6147fa5 100644 --- a/src/reference/config/bindings/openapi-asyncapi/proxy.md +++ b/src/reference/config/bindings/openapi-asyncapi/proxy.md @@ -4,7 +4,7 @@ shortTitle: proxy # openapi-asyncapi proxy -The openapi-asyncapi proxy binding +The openapi-asyncapi proxy binding for adapting `openapi` operations to `asyncapi` operations. ```yaml {3} diff --git a/src/reference/config/bindings/openapi/README.md b/src/reference/config/bindings/openapi/README.md index e05f2365..14d7aefb 100644 --- a/src/reference/config/bindings/openapi/README.md +++ b/src/reference/config/bindings/openapi/README.md @@ -7,8 +7,9 @@ shortTitle: openapi category: - Binding tag: - - Server - - Client + - openapi + - server + - client --- # openapi Binding diff --git a/src/reference/config/bindings/openapi/client.md b/src/reference/config/bindings/openapi/client.md index a27fc79d..3df16a26 100644 --- a/src/reference/config/bindings/openapi/client.md +++ b/src/reference/config/bindings/openapi/client.md @@ -4,7 +4,7 @@ shortTitle: client # openapi client -The openapi client binding +The openapi client binding creates composite of `http`, `tls`, and `tcp` bindings with client kind and adapts OpenAPI request-response streams to HTTP request-response streams. ```yaml {3} diff --git a/src/reference/config/bindings/openapi/server.md b/src/reference/config/bindings/openapi/server.md index 18f8f9f7..7ff3f32c 100644 --- a/src/reference/config/bindings/openapi/server.md +++ b/src/reference/config/bindings/openapi/server.md @@ -4,7 +4,7 @@ shortTitle: server # openapi server -The openapi server binding +The openapi server binding creates composite of `tcp`, `tls`, and `http` bindings with server kind and adapts HTTP request-response streams to OpenAPI request-response streams. ```yaml {3} diff --git a/src/reference/config/bindings/proxy/.partials/routes.md b/src/reference/config/bindings/proxy/.partials/routes.md index aab34fe3..213c2064 100644 --- a/src/reference/config/bindings/proxy/.partials/routes.md +++ b/src/reference/config/bindings/proxy/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `proxy`-specific routes. +Conditional `proxy` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/proxy/README.md b/src/reference/config/bindings/proxy/README.md index 5b585cfb..ad36046e 100644 --- a/src/reference/config/bindings/proxy/README.md +++ b/src/reference/config/bindings/proxy/README.md @@ -7,8 +7,9 @@ shortTitle: proxy category: - Binding tag: - - Proxy - - Server + - proxy + - server + - client --- # proxy Binding @@ -29,7 +30,7 @@ The `server` kind `proxy` binding decodes `Proxy v2` protocol on the inbound net > [Full config](./client.md) -The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via `Proxy v2` protocol. +The `client` kind `proxy` binding receives inbound application streams and encodes each as a network stream via Proxy v2 protocol. ```yaml {3} diff --git a/src/reference/config/bindings/proxy/client.md b/src/reference/config/bindings/proxy/client.md index f47c398e..c2c35304 100644 --- a/src/reference/config/bindings/proxy/client.md +++ b/src/reference/config/bindings/proxy/client.md @@ -4,7 +4,7 @@ shortTitle: client # proxy client -The proxy client binding +The proxy client binding receives inbound application streams and encodes each as a network stream via Proxy v2 protocol. ```yaml {3} diff --git a/src/reference/config/bindings/proxy/server.md b/src/reference/config/bindings/proxy/server.md index 1432e72b..01a9cceb 100644 --- a/src/reference/config/bindings/proxy/server.md +++ b/src/reference/config/bindings/proxy/server.md @@ -4,7 +4,7 @@ shortTitle: server # proxy server -The proxy server binding +The proxy server binding decodes Proxy v2 protocol on the inbound network stream, producing higher level application streams for each request. ```yaml {3} diff --git a/src/reference/config/bindings/sse-kafka/.partials/routes.md b/src/reference/config/bindings/sse-kafka/.partials/routes.md index 5314970b..ab1c026c 100644 --- a/src/reference/config/bindings/sse-kafka/.partials/routes.md +++ b/src/reference/config/bindings/sse-kafka/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `sse-kafka`-specific routes for adapting `sse` data streams to `kafka` data streams. +Conditional `sse-kafka` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/sse-kafka/README.md b/src/reference/config/bindings/sse-kafka/README.md index 14f4836a..d67798c1 100644 --- a/src/reference/config/bindings/sse-kafka/README.md +++ b/src/reference/config/bindings/sse-kafka/README.md @@ -7,7 +7,8 @@ shortTitle: sse-kafka category: - Binding tag: - - Proxy + - sse-kafka + - proxy --- # sse-kafka Binding diff --git a/src/reference/config/bindings/sse-kafka/proxy.md b/src/reference/config/bindings/sse-kafka/proxy.md index c8d89f9d..99bfe6b8 100644 --- a/src/reference/config/bindings/sse-kafka/proxy.md +++ b/src/reference/config/bindings/sse-kafka/proxy.md @@ -4,7 +4,7 @@ shortTitle: proxy # sse-kafka proxy -The sse-kafka proxy binding +The sse-kafka proxy binding for adapting `sse` data streams to `kafka` data streams. ```yaml {3} diff --git a/src/reference/config/bindings/sse/.partials/routes.md b/src/reference/config/bindings/sse/.partials/routes.md index 02611432..1d404e17 100644 --- a/src/reference/config/bindings/sse/.partials/routes.md +++ b/src/reference/config/bindings/sse/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `sse`-specific routes. +Conditional `sse` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/sse/README.md b/src/reference/config/bindings/sse/README.md index 7143e32a..8d68cecf 100644 --- a/src/reference/config/bindings/sse/README.md +++ b/src/reference/config/bindings/sse/README.md @@ -7,7 +7,9 @@ shortTitle: sse category: - Binding tag: - - Server + - sse + - server + - client --- # sse Binding diff --git a/src/reference/config/bindings/sse/client.md b/src/reference/config/bindings/sse/client.md index f9690391..25077620 100644 --- a/src/reference/config/bindings/sse/client.md +++ b/src/reference/config/bindings/sse/client.md @@ -4,7 +4,7 @@ shortTitle: client # sse client -The sse client binding +The sse client binding converts outbound `see` request-response streams into `http` request-response streams. ```yaml {3} diff --git a/src/reference/config/bindings/sse/server.md b/src/reference/config/bindings/sse/server.md index 4d4b9d5c..aa8d62b2 100644 --- a/src/reference/config/bindings/sse/server.md +++ b/src/reference/config/bindings/sse/server.md @@ -4,7 +4,7 @@ shortTitle: server # sse server -The sse server binding +The sse server binding converts inbound `http` request-response streams into `sse` request-response streams. ```yaml {3} diff --git a/src/reference/config/bindings/tcp/.partials/routes.md b/src/reference/config/bindings/tcp/.partials/routes.md index 910fec58..4d863ad6 100644 --- a/src/reference/config/bindings/tcp/.partials/routes.md +++ b/src/reference/config/bindings/tcp/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `tcp`-specific routes. +Conditional `tcp` specific routes. #### routes[].guarded diff --git a/src/reference/config/bindings/tcp/README.md b/src/reference/config/bindings/tcp/README.md index 88a62518..5ff952ea 100644 --- a/src/reference/config/bindings/tcp/README.md +++ b/src/reference/config/bindings/tcp/README.md @@ -7,7 +7,9 @@ shortTitle: tcp category: - Binding tag: - - Server + - tcp + - server + - client --- # tcp Binding @@ -20,7 +22,7 @@ Conditional routes based on the hostname authority and network address mask are > [Full config](./server.md) -The `server` kind `tcp` binding listens for inbound socket connections, producing higher level application streams for each remote `tcp` client. +The `server` kind `tcp` binding listens for inbound socket connections, producing higher level application streams for each remote TCP client. ```yaml {3} @@ -30,7 +32,7 @@ The `server` kind `tcp` binding listens for inbound socket connections, producin > [Full config](./client.md) -The `client` kind `tcp` binding receives inbound application streams and initiates outbound `tcp` network connections to a remote `tcp` server address. +The `client` kind `tcp` binding receives inbound application streams and initiates outbound TCP network connections to a remote TCP server address. ```yaml {3} diff --git a/src/reference/config/bindings/tcp/client.md b/src/reference/config/bindings/tcp/client.md index 5d2c22d1..e9e25f86 100644 --- a/src/reference/config/bindings/tcp/client.md +++ b/src/reference/config/bindings/tcp/client.md @@ -4,7 +4,7 @@ shortTitle: client # tcp client -The tcp client binding +The tcp client binding receives inbound application streams and initiates outbound TCP network connections to a remote TCP server address. ```yaml {3} diff --git a/src/reference/config/bindings/tcp/server.md b/src/reference/config/bindings/tcp/server.md index 068352d5..5852bc9c 100644 --- a/src/reference/config/bindings/tcp/server.md +++ b/src/reference/config/bindings/tcp/server.md @@ -4,7 +4,7 @@ shortTitle: server # tcp server -The tcp server binding +The tcp server binding listens for inbound socket connections, producing higher level application streams for each remote TCP client. ```yaml {3} diff --git a/src/reference/config/bindings/tls/.partials/routes.md b/src/reference/config/bindings/tls/.partials/routes.md index 5e930abf..e46c05bc 100644 --- a/src/reference/config/bindings/tls/.partials/routes.md +++ b/src/reference/config/bindings/tls/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `tls`-specific routes. +Conditional `tls` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/tls/README.md b/src/reference/config/bindings/tls/README.md index 4dbe11dd..ce282de8 100644 --- a/src/reference/config/bindings/tls/README.md +++ b/src/reference/config/bindings/tls/README.md @@ -7,7 +7,9 @@ shortTitle: tls category: - Binding tag: - - Server + - tls + - server + - client --- # tls Binding @@ -18,7 +20,7 @@ Defines a binding with `tls` protocol support, with `server`, `client` or `proxy > [Full config](./server.md) -The `server` kind tls binding decodes encrypted TLS protocol on the inbound network stream, producing higher level cleartext application streams for each request. +The `server` kind `tls` binding decodes encrypted TLS protocol on the inbound network stream, producing higher level cleartext application streams for each request. Certificates and keys required to complete the TLS handshake are provided by a `vault` referenced in the binding configuration. diff --git a/src/reference/config/bindings/tls/client.md b/src/reference/config/bindings/tls/client.md index 18aec461..2d2c49be 100644 --- a/src/reference/config/bindings/tls/client.md +++ b/src/reference/config/bindings/tls/client.md @@ -4,7 +4,7 @@ shortTitle: client # tls client -The tls client binding +The tls client binding receives inbound application streams and encodes each as an encrypted network stream via TLS protocol. ```yaml {3} diff --git a/src/reference/config/bindings/tls/proxy.md b/src/reference/config/bindings/tls/proxy.md index 2e46c80c..28cd7ffc 100644 --- a/src/reference/config/bindings/tls/proxy.md +++ b/src/reference/config/bindings/tls/proxy.md @@ -4,7 +4,7 @@ shortTitle: proxy # tls proxy -The tls proxy binding +The tls proxy binding detects `ClientHello` `server_name` extension to provide TLS virtual hosting by routing based on server name. ```yaml {3} diff --git a/src/reference/config/bindings/tls/server.md b/src/reference/config/bindings/tls/server.md index f159e371..fcb0ba74 100644 --- a/src/reference/config/bindings/tls/server.md +++ b/src/reference/config/bindings/tls/server.md @@ -4,7 +4,7 @@ shortTitle: server # tls server -The tls server binding +The tls server binding decodes encrypted TLS protocol on the inbound network stream, producing higher level cleartext application streams for each request. ```yaml {3} diff --git a/src/reference/config/bindings/ws/.partials/routes.md b/src/reference/config/bindings/ws/.partials/routes.md index 8ae2402f..a4407158 100644 --- a/src/reference/config/bindings/ws/.partials/routes.md +++ b/src/reference/config/bindings/ws/.partials/routes.md @@ -2,7 +2,7 @@ > `array` of `object` -Conditional `ws`-specific routes. +Conditional `ws` specific routes. ```yaml routes: diff --git a/src/reference/config/bindings/ws/README.md b/src/reference/config/bindings/ws/README.md index 34328531..fa9dc51a 100644 --- a/src/reference/config/bindings/ws/README.md +++ b/src/reference/config/bindings/ws/README.md @@ -7,7 +7,9 @@ shortTitle: ws category: - Binding tag: - - Server + - ws + - server + - client --- # ws Binding diff --git a/src/reference/config/bindings/ws/client.md b/src/reference/config/bindings/ws/client.md index 005b7456..190ffe68 100644 --- a/src/reference/config/bindings/ws/client.md +++ b/src/reference/config/bindings/ws/client.md @@ -4,7 +4,7 @@ shortTitle: client # ws client -The ws client binding +The ws client binding converts inbound `ws` full duplex streams into `http` request-response streams. ```yaml {3} diff --git a/src/reference/config/bindings/ws/server.md b/src/reference/config/bindings/ws/server.md index c7cd1065..51e30d75 100644 --- a/src/reference/config/bindings/ws/server.md +++ b/src/reference/config/bindings/ws/server.md @@ -4,7 +4,7 @@ shortTitle: server # ws server -The ws server binding +The ws server binding binding converts inbound `http` request-response streams into `ws` full-duplex streams. ```yaml {3} diff --git a/src/reference/config/guards/jwt.md b/src/reference/config/guards/jwt.md index 204ed49a..bebb014d 100644 --- a/src/reference/config/guards/jwt.md +++ b/src/reference/config/guards/jwt.md @@ -2,9 +2,9 @@ redirectFrom: /reference/config/guards/guard-jwt.html shortTitle: jwt category: - - Binding + - Guard tag: - - Server + - jwt --- # jwt Guard From 5028d545e70097fae513cf32fb4567c472c15305 Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 18 Sep 2024 15:51:29 -0400 Subject: [PATCH 53/54] add zilla.yaml file placeholders --- src/reference/config/bindings/tls/.partials/client.yaml | 3 +++ src/reference/config/bindings/tls/.partials/proxy.yaml | 3 +++ src/reference/config/bindings/ws/.partials/client.yaml | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/reference/config/bindings/tls/.partials/client.yaml b/src/reference/config/bindings/tls/.partials/client.yaml index e69de29b..fee7d878 100644 --- a/src/reference/config/bindings/tls/.partials/client.yaml +++ b/src/reference/config/bindings/tls/.partials/client.yaml @@ -0,0 +1,3 @@ +tls_client: + type: tls + kind: client diff --git a/src/reference/config/bindings/tls/.partials/proxy.yaml b/src/reference/config/bindings/tls/.partials/proxy.yaml index e69de29b..f5a44207 100644 --- a/src/reference/config/bindings/tls/.partials/proxy.yaml +++ b/src/reference/config/bindings/tls/.partials/proxy.yaml @@ -0,0 +1,3 @@ +tls_proxy: + type: tls + kind: proxy diff --git a/src/reference/config/bindings/ws/.partials/client.yaml b/src/reference/config/bindings/ws/.partials/client.yaml index e69de29b..6c0bebd8 100644 --- a/src/reference/config/bindings/ws/.partials/client.yaml +++ b/src/reference/config/bindings/ws/.partials/client.yaml @@ -0,0 +1,3 @@ +ws_client: + type: ws + kind: client From cd4537e0e24aac5ed67e1e5ba60ed23738c5d92a Mon Sep 17 00:00:00 2001 From: AJ Date: Wed, 18 Sep 2024 15:59:52 -0400 Subject: [PATCH 54/54] update tags --- src/reference/config/catalogs/apicurio-registry.md | 3 ++- src/reference/config/catalogs/aws-glue.md | 3 ++- src/reference/config/catalogs/confluent-schema-registry.md | 2 ++ src/reference/config/catalogs/filesystem.md | 2 ++ src/reference/config/catalogs/inline.md | 2 ++ src/reference/config/catalogs/karapace-schema-registry.md | 2 ++ src/reference/config/catalogs/schema-registry.md | 2 ++ src/reference/config/models/avro.md | 3 ++- src/reference/config/models/double.md | 2 ++ src/reference/config/models/float.md | 2 ++ src/reference/config/models/int32.md | 4 +++- src/reference/config/models/int64.md | 2 ++ src/reference/config/models/json.md | 3 ++- src/reference/config/models/protobuf.md | 2 ++ src/reference/config/models/string.md | 3 ++- src/reference/config/telemetry/exporters/aws-cloudwatch.md | 5 +++-- src/reference/config/telemetry/exporters/otlp.md | 4 ++-- src/reference/config/telemetry/exporters/prometheus.md | 3 ++- src/reference/config/telemetry/exporters/stdout.md | 3 ++- src/reference/config/telemetry/exporters/syslog.md | 3 ++- 20 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/reference/config/catalogs/apicurio-registry.md b/src/reference/config/catalogs/apicurio-registry.md index 77ed0af4..e377a5af 100644 --- a/src/reference/config/catalogs/apicurio-registry.md +++ b/src/reference/config/catalogs/apicurio-registry.md @@ -1,9 +1,10 @@ --- redirectFrom: /reference/config/catalogs/catalog-apicurio-registry.html shortTitle: apicurio-registry - category: - Catalog +tags: + - apicurio-registry --- # apicurio-registry Catalog diff --git a/src/reference/config/catalogs/aws-glue.md b/src/reference/config/catalogs/aws-glue.md index e9309ed4..3944468d 100644 --- a/src/reference/config/catalogs/aws-glue.md +++ b/src/reference/config/catalogs/aws-glue.md @@ -1,10 +1,11 @@ --- redirectFrom: /reference/config/catalogs/catalog-aws-glue.html shortTitle: aws-glue - icon: aky-zilla-plus category: - Catalog +tags: + - aws-glue --- # aws-glue Catalog diff --git a/src/reference/config/catalogs/confluent-schema-registry.md b/src/reference/config/catalogs/confluent-schema-registry.md index d0e7910e..37e21b40 100644 --- a/src/reference/config/catalogs/confluent-schema-registry.md +++ b/src/reference/config/catalogs/confluent-schema-registry.md @@ -4,6 +4,8 @@ shortTitle: confluent-schema-registry icon: aky-zilla-plus category: - Catalog +tags: + - confluent-schema-registry --- # confluent-schema-registry Catalog diff --git a/src/reference/config/catalogs/filesystem.md b/src/reference/config/catalogs/filesystem.md index bc8ea5be..8a81de1d 100644 --- a/src/reference/config/catalogs/filesystem.md +++ b/src/reference/config/catalogs/filesystem.md @@ -3,6 +3,8 @@ redirectFrom: /reference/config/catalogs/catalog-filesystem.html shortTitle: filesystem category: - Catalog +tags: + - filesystem --- # filesystem Catalog diff --git a/src/reference/config/catalogs/inline.md b/src/reference/config/catalogs/inline.md index 7f305fd6..70631ec4 100644 --- a/src/reference/config/catalogs/inline.md +++ b/src/reference/config/catalogs/inline.md @@ -3,6 +3,8 @@ redirectFrom: /reference/config/catalogs/catalog-inline.html shortTitle: inline category: - Catalog +tags: + - inline --- # inline Catalog diff --git a/src/reference/config/catalogs/karapace-schema-registry.md b/src/reference/config/catalogs/karapace-schema-registry.md index d006eb41..40c1177e 100644 --- a/src/reference/config/catalogs/karapace-schema-registry.md +++ b/src/reference/config/catalogs/karapace-schema-registry.md @@ -4,6 +4,8 @@ shortTitle: karapace-schema-registry category: - Catalog +tags: + - karapace-schema-registry --- # karapace-schema-registry Catalog diff --git a/src/reference/config/catalogs/schema-registry.md b/src/reference/config/catalogs/schema-registry.md index f01f2c3c..6dd99d1f 100644 --- a/src/reference/config/catalogs/schema-registry.md +++ b/src/reference/config/catalogs/schema-registry.md @@ -3,6 +3,8 @@ redirectFrom: /reference/config/catalogs/catalog-schema-registry.html shortTitle: schema-registry category: - Catalog +tags: + - schema-registry --- # schema-registry Catalog diff --git a/src/reference/config/models/avro.md b/src/reference/config/models/avro.md index 359e3418..70b8eb79 100644 --- a/src/reference/config/models/avro.md +++ b/src/reference/config/models/avro.md @@ -1,9 +1,10 @@ --- redirectFrom: /reference/config/models/model-avro.html shortTitle: avro - category: - Models +tags: + - avro --- # avro model diff --git a/src/reference/config/models/double.md b/src/reference/config/models/double.md index f9147008..57202593 100644 --- a/src/reference/config/models/double.md +++ b/src/reference/config/models/double.md @@ -2,6 +2,8 @@ shortTitle: double category: - Models +tags: + - double --- # double Model diff --git a/src/reference/config/models/float.md b/src/reference/config/models/float.md index b0ee9be8..541c8b6a 100644 --- a/src/reference/config/models/float.md +++ b/src/reference/config/models/float.md @@ -2,6 +2,8 @@ shortTitle: float category: - Models +tags: + - float --- # float Model diff --git a/src/reference/config/models/int32.md b/src/reference/config/models/int32.md index 71da490c..cd9dcbe7 100644 --- a/src/reference/config/models/int32.md +++ b/src/reference/config/models/int32.md @@ -3,9 +3,11 @@ redirectFrom: /reference/config/models/model-integer.html shortTitle: int32 category: - Models +tags: + - int32 --- -# integer Model +# int32 Model Defines a model to enforce validation for int32 data. diff --git a/src/reference/config/models/int64.md b/src/reference/config/models/int64.md index 101664e9..0a9e904f 100644 --- a/src/reference/config/models/int64.md +++ b/src/reference/config/models/int64.md @@ -2,6 +2,8 @@ shortTitle: int64 category: - Models +tags: + - int64 --- # int64 Model diff --git a/src/reference/config/models/json.md b/src/reference/config/models/json.md index c11b007f..459550d7 100644 --- a/src/reference/config/models/json.md +++ b/src/reference/config/models/json.md @@ -1,9 +1,10 @@ --- redirectFrom: /reference/config/models/model-json.html shortTitle: json - category: - Models +tags: + - json --- # json Model diff --git a/src/reference/config/models/protobuf.md b/src/reference/config/models/protobuf.md index fb19acc7..6ee0640e 100644 --- a/src/reference/config/models/protobuf.md +++ b/src/reference/config/models/protobuf.md @@ -3,6 +3,8 @@ redirectFrom: /reference/config/models/model-protobuf.html shortTitle: protobuf category: - Models +tags: + - protobuf --- # protobuf Model diff --git a/src/reference/config/models/string.md b/src/reference/config/models/string.md index ad30a956..ba6abfaa 100644 --- a/src/reference/config/models/string.md +++ b/src/reference/config/models/string.md @@ -1,9 +1,10 @@ --- redirectFrom: /reference/config/models/model-string.html shortTitle: string - category: - Models +tags: + - string --- # string Model diff --git a/src/reference/config/telemetry/exporters/aws-cloudwatch.md b/src/reference/config/telemetry/exporters/aws-cloudwatch.md index 21b40209..8a18737a 100644 --- a/src/reference/config/telemetry/exporters/aws-cloudwatch.md +++ b/src/reference/config/telemetry/exporters/aws-cloudwatch.md @@ -1,11 +1,12 @@ --- redirectFrom: /reference/config/telemetry/exporters/exporter-aws-cloudwatch.html shortTitle: aws-cloudwatch - icon: aky-zilla-plus +category: - Telemetry -tag: - Exporters +tag: + - aws-cloudwatch --- # aws-cloudwatch Exporter diff --git a/src/reference/config/telemetry/exporters/otlp.md b/src/reference/config/telemetry/exporters/otlp.md index 8d56054b..ddb48b30 100644 --- a/src/reference/config/telemetry/exporters/otlp.md +++ b/src/reference/config/telemetry/exporters/otlp.md @@ -1,11 +1,11 @@ --- redirectFrom: /reference/config/telemetry/exporters/exporter-otlp.html shortTitle: otlp - category: - Telemetry -tag: - Exporters +tag: + - otlp --- # otlp Exporter diff --git a/src/reference/config/telemetry/exporters/prometheus.md b/src/reference/config/telemetry/exporters/prometheus.md index deb64393..716adae0 100644 --- a/src/reference/config/telemetry/exporters/prometheus.md +++ b/src/reference/config/telemetry/exporters/prometheus.md @@ -4,8 +4,9 @@ shortTitle: prometheus category: - Telemetry -tag: - Exporters +tag: + - prometheus --- # prometheus Exporter diff --git a/src/reference/config/telemetry/exporters/stdout.md b/src/reference/config/telemetry/exporters/stdout.md index b6b6308c..fe236ca6 100644 --- a/src/reference/config/telemetry/exporters/stdout.md +++ b/src/reference/config/telemetry/exporters/stdout.md @@ -4,8 +4,9 @@ shortTitle: stdout category: - Telemetry -tag: - Exporters +tag: + - stdout --- # stdout Exporter diff --git a/src/reference/config/telemetry/exporters/syslog.md b/src/reference/config/telemetry/exporters/syslog.md index 3fd7d569..a996ab6e 100644 --- a/src/reference/config/telemetry/exporters/syslog.md +++ b/src/reference/config/telemetry/exporters/syslog.md @@ -5,8 +5,9 @@ shortTitle: syslog icon: aky-zilla-plus category: - Telemetry -tag: - Exporters +tag: + - syslog --- # syslog Exporter